Nginx高级配置

Nginx高级配置

  • 1 Nginx创建多个工作进程
  • 2 Nginx连接数设置
  • 3 Nginx多http服务器设置
  • 4 Nginx资源路径设置
  • 5 Nginx重定向
  • 6 Nginx负载均衡配置
  • 7 反向代理和正向代理
  • 8 写在最后

1 Nginx创建多个工作进程

修改nginx.conf,将worker_processes 数量设置为4,具体工作原理是Nginx工作主进程,会利用fork创建4个子进程作为工作进程。

worker_processes  4;

查看是否修改成功:
在这里插入图片描述
具体工作原理如下图所示:
Nginx高级配置_第1张图片

当我们利用web进行访问Nginx服务器时这时候主进程12262负责监听新的http连接请求,当连接建立后将连接交给worker进程12266处理。
在这里插入图片描述
web访问原理图如下:当利用web客户端进行网页访问时,第一步是master进程会与web服务器进行连接的建立;之后将fd交给后面的woker子进程工作;工作子进程会与web客户端建立两个连接,其中一个http的长连接,另一个则是心跳连接。这里也会引入一个惊群的问题,就是当一个客户端连接过来后多个工作子进程收到响应,解决方案就是上锁,保证一个只有一个woker可以拿到连接句柄。
Nginx高级配置_第2张图片

2 Nginx连接数设置

连接数设置主要是设置最大的同时处理的连接数量,类似于连接池的概念。可以通过修改句柄限制将连接数提高,但是需要考虑到内存方面的限制。

events {
    worker_connections  1024;
}

根据需要调整:
在这里插入图片描述

3 Nginx多http服务器设置

Nginx支持多个服务器设置,配置非常简单只需要设置多个server即可,根据不同的server分配相应的端口号,需要注意的是这些服务器同时在主进程监听。

http {
    server {
        listen       8888;

     }
     server {
        listen       8889;
     }
     server {
        listen       8890;
        }
     }
     server {
        listen       8891;
     }
}

具体情况如下所示:
在这里插入图片描述

4 Nginx资源路径设置

相对路径设置,即设置在Nginx安装的根目录,如默认的html目录下。

location / {
                root html;
                index my_test.html;
        }

绝对路径设置,直接指定一个绝对路径

location / {
                root /home/nginx/test;
                index my_test.html;
        }

5 Nginx重定向

重定向是将原本访问的服务,重定向到另一个服务器的操作。具体如下就是将原本8889端口的服务器,重定向到8888端口的服务器。


      server {
        listen       8889;

        location / {
                proxy_pass http://192.168.88.145:8888;
        }

     }

6 Nginx负载均衡配置

负载均衡主要利用的是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;
        }

7 反向代理和正向代理

反向代理(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+端口号进行代理了。

8 写在最后

Nginx是支持热启动的,也就是说当我们修改配置文件后,不用关闭Nginx,就可以实现让配置生效,估计很多人和我一样喜欢杀死Nginx后重启服务。

nginx -s reload

你可能感兴趣的:(中间件开发,nginx,服务器,运维)