Nginx反向代理

Nginx反向代理

使用Nginx实现Web反向代理功能,可以隐藏真实服务器的ip提高安全,在集群模式下,通过反向代理可以实现服务器集群的负载均衡配置,灵活调度,反向代理也是目前服务器提供服务的常用模式。

![image-20241008213058281](file:///E:/BaiduNetdiskDownload/%E6%A1%88%E4%BE%8B/image-20241008213058281.png)

  • Nginx实现七层代理配置

    • Nginx配置

      通过upstream配置块添加需要代理的服务器,配置文件写在server的上面。

      http {
      ...
      upstream webserver {    ##使用upstream定义代理的服务器或服务器集群,名称任意
               server 192.168.99.100:80;  ##填写服务器ip和端口
               server 192.168.99.200:80;
              }
              
      server {
                listen       80;
                server_name  localhost;
      ...
      

      在location块内使用proxy_pass参数调用集群。

       location / {
                    root   html;
                    index  index.html index.htm;
                    proxy_pass http://webserver;  ##通过proxy_pass将用户的请求转发给webserver集群
                }
       ...
      
    • 通过代理实现负载调度

      默认情况下,集群内的主机是轮询访问的,可以通过配置参数来实现动态调度。

      通过weight参数修改主机权重。默认的权重为1,权重越高,分配的访问次数越多。

      .. ..
            upstream webserver {
               server 192.168.99.100:80 weight=2;  
               server 192.168.99.200:80;
              }
            server {
       .. ..
      

      通过ip_hash参数设置ip绑定,指定源IP访问指定主机,该操作也可以用户与服务器的会话保持。

      [root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
      ...
            upstream webserver {
               ip_hash;
               server 192.168.99.100:80;
               server 192.168.99.200:80;
              }
            server {
      ...
      

      给集群内的服务器添加down标签,告知Nginx该服务器暂时不参与集群活动

      [root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf
      ...
            upstream webserver {
               server 192.168.99.100:80;
               server 192.168.99.200:80 down;
              }
            server {
       ...
      
    • 集群健康检查机制

      Nginx默认开启了健康检查,设置健康检查max_fails可以设置后台服务器连不上的失败次数,fail_timeout可以设置后台服务器的失败超时时间,等待多长时间再次尝试连接。

      ...
            upstream webserver {
               server 192.168.99.100:80;
               server 192.168.99.200:80 max_fails=2 fail_timeout=30; ##两次连接失败则判定为下线,等待30秒后再次尝试连接。
              }
            server {
       ...
      
  • Nginx实现四层代理配置

    除了代理网站,Nginx也可以实现对基于端口的其他服务代理。

    !image

    • Nginx配置方式,配置方法与七层类似,指定被代理服务的IP和端口即可,使用steam块配置,需要写在http块的外面。

       [root@proxy nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf    #配置写到http的上方即可
      ...
            stream {
              upstream backend {             #创建集群,名称为backend
                  server 192.168.99.100:22;  #后端SSH服务器IP和端口
                  server 192.168.99.200:22;
                }
               server {               #调用集群
                  listen 12345;       #Nginx代理监听的端口,可以自己定义
                  proxy_pass backend; #调用backend集群
                }
           }
      http {
      .. ..
      }
      
posted @ 2025-07-10 00:14  Epiphany(qrx)  阅读(68)  评论(0)    收藏  举报