Nginx 配置监听实现转发两个端口

Nginx 第二次使用

一些使用的体验。

可以看到与上次不同的地方:

不同点1,代码如下

 upstream my_servers {
        server ip1:8886 weight=5  max_fails=2 fail_timeout=60s;
        server ip2:8885 weight=1  max_fails=2 fail_timeout=60s;   
 }
可以看到这次用到了 max_fails=2 fail_timeout=60s;

这里的理解是 当我们使用Nginx的时候,假设请求放到了 ip1:8886 这个endpoint,但是这个请求之前我就把对应ip1服务器关了,那么这时请求会等待fail_timeout=60s,如果无响应那么去请求ip2,但是下次来请求的时候还是会请求到ip1,那什么时候停止了?就是max_fails,【我的理解是在fail_timeout=内达到max_fails次数,那么在接下来的fail_timeout内,Nginx是不会把请求转发到这个失败达到max_fails的服务器的】

不同点2

这里配置了两个端口转发的监听:其实实现起来很简答,只要server和upstream 多写一对就可以了。

疑惑点: 以下的含义到底是啥》?

 proxy_connect_timeout    3;  		

这里我目前理解为建立连接,失败的最长转发时间,3就是请求建立连接3s后无响应,那么请求下一台

 proxy_read_timeout       3;

这里是read我会理解为是类似get方法

 proxy_send_timeout       3;

这里是send我会理解为是类似post方法

遇到的问题:

config文件修改后 使用nginx -s reload 的命令结果 没有报错 但是查看log的日志 还是再按照原来的日志跑

解决方案:

​ 1.重启电脑

​ 2.如果是cmd,那么tasklist 然后 找到pid 再taskkill /F /Pid yourpid 再start nginx

完整代码:

 #user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024  ;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    
    sendfile        on;   
    keepalive_timeout  65;
    upstream my_servers {
        server 127.0.0.1:8886 weight=5  max_fails=2 fail_timeout=60s;
        server (改成自己的ip):8885 weight=1  max_fails=2 fail_timeout=60s;
       
    }
   upstream my_servers2 {
        server 127.0.0.1:81 weight=5  max_fails=2 fail_timeout=60s;
        server (改成自己的ip):81 weight=1  max_fails=2 fail_timeout=60s;
       
    }

    server {
        listen       8887;
        server_name  my_servers; 
				# 下面的三个1表示超时分流
        location / {
           proxy_pass http://my_servers; 			
           proxy_connect_timeout    3;
           proxy_read_timeout       3;
           proxy_send_timeout       3;

        }
     
       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       
    }
server {
        listen       80;
        server_name  my_servers2; 
				# 下面的三个1表示超时分流
        location / {
           proxy_pass http://my_servers2; 			
           proxy_connect_timeout    1;
           proxy_read_timeout       1;
           proxy_send_timeout       1;

        }
     
       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       
     
    }


}



Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐