💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] ## TCP反向代理 ***** nginx1.9开始支持tcp层的转发,通过stream实现的,。 默认yum安装的Nginx不支持TCP转发,需要安装--with-stream 模块,可以通过源码编译安装这个模块后替换原来的nginx执行程序。 ### Linux环境安装Nginx --with-stream模块 ***** 下载一个同版本可编译的Nginx ``` $ wget http://nginx.org/download/nginx-1.16.0.tar.gz ``` 安装缺少的库 ``` yum install -y openssl-devel.x86_64 pcre-devel.x86_64 ``` 解压并进入目录: ``` $ tar xvf nginx-1.16.0.tar.gz $ cd nginx-1.16.0 ``` 编译安装--with-stream 模块 ``` $ ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/usr/local/nginx16/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --with-stream $ make $ make install ``` 验证模块安装情况 ``` /usr/local/nginx/nginx -V ``` ### TCP转发配置 ***** 创建文件夹和配置 cd /etc/nginx mkdir tcp.d 修改配置文件包含文件 vi /etc/nginx/nginx.conf,增加如下行 ``` stream { include /etc/nginx/tcp.d/*.conf; } ``` 创建tcp反向代理配置文件 vi /etc/nginx/tcp.d/testdb_proxy.conf,增加如下内容 ``` stream { upstream testdb_proxy { hash $remote_addr consistent; # 转发的目的地址和端口 server 10.168.240.239:1521 weight=5 max_fails=3 fail_timeout=30s; } # 提供转发的服务,即访问localhost:8921,会跳转至代理testdb_proxy指定的转发地址 server { listen 8921; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass testdb_proxy; } } ``` 如果需要tcp长连接则: ``` server { listen 8921 so_keepalive=on; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass testdb_proxy; } ``` 增加日志: ``` log_format proxy '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time "$upstream_addr" ' '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"'; access_log /var/log/nginx/tcp-access.log proxy ; open_log_file_cache off; include /etc/nginx/conf.d/*.stream; ``` 启动nginx ``` nginx -c /etc/nginx/nginx.conf ``` ### Upstream upstream 就是负载均衡。从字面上的意思就可以理解,负载均衡就是均衡的,按照特定的调度算法,将请求调度到指定的节点(**upstream server**)。 **upstream**配置说明: 1. nginx 负载均衡调度算法加上我们安装的 fair 模块,大致有以下 4 种: | 调度算法 | 说明 | | --- | --- | | 权重轮询(默认) | 按照顺序逐一分配到不同的后端。自动剔除失败的机器,使访问不受影响。 | | ip_hash| 每个请求按照 IP 的 Hash 结果分配,使来自同一 IP 的固定访问到同一后端。能解决部分程序 session 没共享的问题| | fair| 更智能的算法,可以根据页面大小和加载速度进行智能负载,响应快的优先分配。| | url_hash| 需要按照 nginx hash 模块,按照访问的 URL 定向到某个机器上,能提升后端缓存服务器的效率。| ## linux 添加用户组,添加用户 ***** 1、建用户: ``` adduser nginx                             //新建phpq用户 passwd nginx                               //给phpq用户设置密码 ``` 2、建工作组 ``` groupadd test                          //新建test工作组 ``` 3、新建用户同时增加工作组 ``` useradd -g test phpq                      //新建phpq用户并增加到test工作组 ``` 注::-g 所属组 -d 家目录 -s 所用的SHELL ## Http反向代理 *****