分类
未分类

Nginx 使用stream模块实现 tcp/udp转发和负载均衡

下面是一份示例 nginx.conf

默认轮询后端绑定的所有节点

weight=3 #控制权重 数值越高 权重越大 负载也越大

max_fails=5 fail_timeout=30s #30秒中内请求失败5次 则标记节点死亡踢出列队30秒后继续加入负载列队

proxy_connect_timeout 1s; #服务端与后端节点连接超实时间

proxy_timeout 30s; #客户端与服务器连接超时时间

user root;
worker_processes 3;
pid /run/nginx.pid;
worker_rlimit_nofile 114514;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 114514;
        # multi_accept on;
}
stream {
        proxy_timeout 30s;
	proxy_connect_timeout 1s;
        upstream group1 {
        #hash $remote_addr consistent; 根据请求IP分配节点 ,测试后发现会与backup节点冲突
	server t1.xxxx.com:11125 weight=3 max_fails=5 fail_timeout=30s;
	server t1b.xxxx.com:30000 weight=5 max_fails=5 fail_timeout=30s;
	server xxxx.com:11125 weight=5 max_fails=5 fail_timeout=30s;
	server 10.0.5.1:11125 backup; #标记backup节点 其他三个节点标记死亡后启用
    }
   	server {
        listen 11125;
        listen 11125 udp;
        proxy_pass group1;
    }
   	server {
        listen 30000;
        listen 30000 udp;
        proxy_pass group1;
    }
   	server {
        listen 30001;
        listen 30001 udp;
        proxy_pass group1;
    }
}

关于nginx绑定DDNS域名问题:nginx会在启动时解析域名对应的ip地址,如果域名对应动态IP在nginx运行后发生改变,则需要手动nginx -s reload后才能刷新IP,否则nginx会继续请求旧IP。

通过添加crontab 每半小时执行一次reload 基本可满足需求。

分类
未分类

nginx去除.html后缀

添加rewrite

if (!-f $request_filename){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite ^/([^\.]+)$ /$1.html last;
}