1.Nginx简介
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的。
何为反向代理呢?即以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
而Nginx主要完成的工作就是反向代理,比如我们向一台服务器的80端口发送了请求,该请求首先由Nginx监听到,其接受到请求内容后再转发给其他服务器,其他服务器处理完后再将结果传送给Nginx,最后由Nginx来统一返回给初始请求端。
Nginx最常见的使用方法就是作为静态资源服务器,比如将CSS,JS,html,htm等文件进行缓存处理。
2.环境搭建
2.1,首先在官网中下载所需版本:http://nginx.org/en/download.html
下载完毕后,解压
2.2,启动Nginx,开启Nginx有两种方法:一种是直接点击exe可执行文件开启;一种是命名行开启,命令如下
start nginx 启动nginx
nginx -s reload 修改配置后重新加载生效
nginx -s reopen 重新打开日志文件
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
关闭nginx:
nginx -s stop 快速停止nginx
nginx -s quit 完整有序的停止nginx
2.各个参数含义解释
#user nobody;
worker_processes 1;
error_log logs/error.log debug; #制定日志路径,级别
events {
accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
multi_accept on; #设置一个进程是否同时接受多个网络连接
worker_connections 1024; #最大连接数
}
http {
include mime.types;
default_type application/octet-stream;
upstream myserver {
server localhost:8080 weight=5;
server localhost:8090 backup; #热备
}
server {
listen 8443;
server_name localhost;
location / {
root html; #页面根目录
index index.html index.htm; #默认页
proxy_pass http://myserver; #请求转向自定义的服务器列表
}
#server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
①,backup指令
upstream proxyserver {
server localhost:8080;
server 192.168.1.15:8080 backup;
}
只要在希望成为后备的服务器ip后面多添加一个backup参数,这台服务器就会成为备份服务器。 在平时不使用,nginx不会给它转发任何请求。只有当其他节点全部无法连接的时候,nginx才会启用这个节点。 一旦有可用的节点恢复服务,该节点则不再使用,又进入后备状态。
可以两台机子互为热备,平时各自负责各自的服务。在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续性,提高服务的可靠性
②,root指令
location /img/ {
alias /var/www/image/;
}
若按照上述配置的话,则访问/img/目录里面的文件时,ningx会自动去/var/www/image/目录找文件
location /img/ {
root /var/www/image;
}
若按照这种配置的话,则访问/img/目录下的文件时,nginx会去/var/www/image/img/目录下找文件。
alias是一个目录别名的定义,root则是最上层目录的定义。
*还有一个重要的区别是alias后面必须要用"/"结束,否则会找不到文件,而root则可有可无。
③,accept_mutex指令
events {
accept_mutex off;
}
让我们看看accept_mutex的意义:当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Worker能获取新连接,其它的Worker会重新进入休眠状态,这就是「惊群问题」。
Nginx缺省激活了accept_mutex,是一种保守的选择。如果关闭了它,可能会引起一定程度的惊群问题,表现为上下文切换增多(sar -w)或者负载上升,但是如果你的网站访问量比较大,为了系统的吞吐量,我还是建议大家关闭它。
④,ip_hash指令
原理是ip_hash技术能够将某个ip的请求定向到同一台服务器,这样一来这个ip下的客户端就能和后端某个服务器建立起稳固的session。
参考博客:
https://hillside.iteye.com/blog/703281
https://blog.youkuaiyun.com/bjash/article/details/8596538
https://blog.youkuaiyun.com/adams_wu/article/details/51669203
https://blog.youkuaiyun.com/hjgzj/article/details/45222223
完