-
Notifications
You must be signed in to change notification settings - Fork 0
Ngnix学习与实践
最近由于原测试服务器下线,所以需要将项目迁移到新申请的机器,新的机器需要重新安装配置环境。自己作为前端小白,记录一下ngnix安装配置的过程,已备以后参考!
要使用某个东西,先要了解它
-
Nginx是什么
Nginx(engine x)是一种静态网页服务器,可以反向代理HTTP、HTPPS、SMTP、POP3、IMAP的协议连接,以及一个负载均衡器和一个HTTP缓存,即它与Tomcat动态Web服务器的区别在于,它只能返回纯静态文件,也就是实际上存在于服务器的文件,所以一般ngnix扮演者另一个角色,这也是它的另一个功能特点反向代理服务器,这样它成了与真正的动态服务器(eg:Tomcat等)链接的桥梁
-
Nginx的功能
根据上面介绍,可以总结出ngnix有下面几个功能:
1)web服务器
ngnix是基于事件驱动的(与Node.js一样),所以能够处理高并发访问,且低耗内存
2)反向代理服务器
什么是代理,代理就是中介,但是代理分为两种,一种是正向代理,一种是反向代理,下面简单的说明一下两者的却别!
正向代理:我们经常所说的翻墙就是一个典型的例子,当
A
无法直接访问到C
,但是A
可以直接访问到B
,而B
可以访问到C
,所以B
此时就成了A
访问C
的代理了。但是原始服务器C
对于A
来说并不是透明的,A
一直知道C
的存在,而且访问的也是C
的地址,所以必须在A
端进行一些设置才能进行正向代理反向代理:反向代理是相对于正向代理来说的,它主要是为了保护原始服务器。还是上面的例子
A <-> proxy B <-> C
,但是此时C
对于A
来说是透明的,A
并不知道C
的存在,A
访问的地址从始至终都是B
,一般来讲C
会设置防火墙,B
成为了允许访问C
的唯一入口,这就起到了一种隐藏保护C
的作用,而B
要做的就是解析A
的请求,发给C
,然后获取C
的响应,返回给A
。因为此时B
能拦截所有的请求,所以B
可以做一些负载均衡的工作,来分发流量。3)邮件服务器&其他
这里就不深入讨论了,自己也不是特别熟悉
-
Nginx配置
一切基于配置
Nginx配置的配置项非常多,它所有的功能都是基于配置文件的,除了本身支持的配置之外,还可以下载第三方模块(也可以自己编写模块)要查看ngnix详细的配置,可以参考这里,下面主要讲一下几个主要功能的配置(简单): 1)压缩模块:设置是否开启gzip压缩,文档查看这里
# 是否开启 gzip on|off; # gzip on => Reponse Headers: Content-Encodeing: gzip; # 还有许多其他高级配置项,可以参考文档
2)缓存模块:设置具体文件的缓存策略,可以参考这里
location /regexp/# 此处设置正则匹配或者绝对uri { expires 30s; # 缓存时间 # .... } # => Reponse Headers: Cache-Control:max-age=30
3)负载均衡:一般反向代理服务器都会设置负载均衡任务
# 设置反向代理 location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; # 代理的地址 proxy_pass http://any-name; # 下面的负载均衡模块名 proxy_redirect off; } # 设置负载均衡 upstram 模块 upstream any-name { server 127.0.0.1:3000 weight=1; # weight表示权重,数值越大,表示被分配到这个server的几率越大 .... }