修改nginx.conf,将worker_processes 数量设置为4,具体工作原理是Nginx工作主进程,会利用fork创建4个子进程作为工作进程。
worker_processes 4;
当我们利用web进行访问Nginx服务器时这时候主进程12262负责监听新的http连接请求,当连接建立后将连接交给worker进程12266处理。
web访问原理图如下:当利用web客户端进行网页访问时,第一步是master进程会与web服务器进行连接的建立;之后将fd交给后面的woker子进程工作;工作子进程会与web客户端建立两个连接,其中一个http的长连接,另一个则是心跳连接。这里也会引入一个惊群的问题,就是当一个客户端连接过来后多个工作子进程收到响应,解决方案就是上锁,保证一个只有一个woker可以拿到连接句柄。
连接数设置主要是设置最大的同时处理的连接数量,类似于连接池的概念。可以通过修改句柄限制将连接数提高,但是需要考虑到内存方面的限制。
events {
worker_connections 1024;
}
根据需要调整:
Nginx支持多个服务器设置,配置非常简单只需要设置多个server即可,根据不同的server分配相应的端口号,需要注意的是这些服务器同时在主进程监听。
http {
server {
listen 8888;
}
server {
listen 8889;
}
server {
listen 8890;
}
}
server {
listen 8891;
}
}
相对路径设置,即设置在Nginx安装的根目录,如默认的html目录下。
location / {
root html;
index my_test.html;
}
绝对路径设置,直接指定一个绝对路径
location / {
root /home/nginx/test;
index my_test.html;
}
重定向是将原本访问的服务,重定向到另一个服务器的操作。具体如下就是将原本8889端口的服务器,重定向到8888端口的服务器。
server {
listen 8889;
location / {
proxy_pass http://192.168.88.145:8888;
}
}
负载均衡主要利用的是upstream功能,将其他服务器的流引到当前服务器,同时可以根据不同服务器的性能要求进行权重配置。如下配置,具体效果就是访问两次的192.168.88.100:8888,后访问一次的192.168.88.101:8888服务器。
upstream backend {
server 192.168.88.100:8888 weight=2;
server 192.168.88.101:8888 weight=1;
}
location = / {
root html;
proxy_pass http://backend;
}
反向代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。在反向代理中,真正的服务器对外是隐藏的。
location / {
proxy_pass http://localhost:8080;
}
正向代理是一个位于客户端和原始服务器(originserver)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
resolver 114.114.114.114 8.8.8.8;
server {
resolver_timeout 5s;
listen 81;
access_log /var/www/access.log;
error_log /var/www/error.log;
location / {
proxy_pass http://$host$request_uri;
}
}
resolver 是配置正向代理的 DNS 服务器,listen 是正向代理的端口,配置好了就可以在 ie 上面或者其他代理插件上面使用服务器 ip+端口号进行代理了。
Nginx是支持热启动的,也就是说当我们修改配置文件后,不用关闭Nginx,就可以实现让配置生效,估计很多人和我一样喜欢杀死Nginx后重启服务。
nginx -s reload