1,下载nginx 和 pcre
wget http://nginx.org/download/nginx-1.8.0.tar.gz
安装nginx 需要pcre包的支持 (下载网址:http://www.pcre.org)解压
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
2,下载 tcp模块
git clone https://github.com/yaoweibin/nginx_tcp_proxy_module
3, 下载OpenSSL nginx_tcp_proxy_module会用到openssl的支持(下载网址:http://www.openssl.org)
wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
4 下载zlib
wget http://www.zlib.net/fossils/zlib-1.2.11.tar.gz
5,分别解压好 路径自己对应。编译nginx 如下配置。
添加模块用--add-module
cd nginx-1.8.0
注意:一定要做个这个Nginx开源软件默认没有提供TCP协议的负载均衡,故需要打补丁并加入模块
patch -p1 < /home/nginx-1.8.0/nginx_tcp_proxy_module/tcp.patch
开始配置nginx
./configure --prefix=/usr/local/nginx --add-module=/home/nginx-1.8.0/nginx_tcp_proxy_module --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.36 --with-openssl=/home/nginx-1.8.0/openssl-1.0.2o --with-zlib=/home/nginx-1.8.0/zlib-1.2.11
6,编译安装
make&&make install
7.建立软连接到/sbin目录下,这样就可以直接使用nginx来启动nginx服务
ln -s /usr/local/nginx/sbin/nginx /sbin/nginx
8,启动 nginx
9.配置upstream
cd /usr/local/nginx/conf
备份默认的配置文件,并复制一份:
mv nginx.conf nginx.conf_back
cp nginx.conf_back nginx.conf
vim nginx.conf
将内容修改如下保存退出:
worker_processes auto;//nginx进程数,自动,也可指定个数 如:worker_processes 10;
worker_rlimit_nofile 100000; //修改nginx进程打开的文件fd数
events {
use epoll; //使用epoll机制,linux下有其他的机制如:kqueue等,centos下使用epoll
worker_connections 51200;//工作进程最大连接数,此连接数受ulimit -n的限制
multi_accept on; //如果multi_accept被禁用,工作进程将接受一次一个新的连接。 否则,工作进程将接受一次所有新连接。
}
tcp {
upstream ironappTCP {//upstream转发配置
server 192.168.1.212:22000;
server 192.168.1.212:22001; //ESServer的ip地址和监听端口,可配置多个
}
server { //nginx服务的监听端口和当前nginx的域名或者ip地址
listen 11181;
server_name 192.168.1.211;
proxy_pass ironappTCP;//转发代理列表,对应upstream项
}
include ./wss.conf;# 这里我们将反向代理新建一个文件引入进来
client_max_body_size 3m;# 上传大小单位M 微信小程序上传大图片时可能需要设置
}
下面配置 wss 和 https
申请证书的方法在另一篇 https://blog.csdn.net/li87218677/article/details/52493236
在前面的nginx.conf 下面 加上包含该文件
include ./wss.conf;# 这里我们将反向代理新建一个文件引入进来
client_max_body_size 3m;# 上传大小单位M 微信小程序上传大图片时可能需要设置
vim wss.conf
#主要是配置原来的ws 和 http 接口
upstream websocket {
#server 43.249.30.68:8082;# 远程websocket服务器地址
server 192.168.241.5:8082;# 远程websocket服务器地址
}
#upstream web{
# server www.xxx.com;# 远程http接口
#}
# 通过下面的反向代理到上面的接口去
server {
server_name 66.viddwjc.cn;
listen 443;#默认https和wss协议端口
ssl on;
# ssl_certificate /usr/nginx/conf/server.crt;#你的上传到服务器的证书位置
#ssl_certificate_key /usr/nginx/conf/server.key;#你的上传到服务器的证书位置
ssl_certificate /etc/letsencrypt/live/bl.viddddwjc.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/bl.viddwjc.cn/privkey.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
underscores_in_headers on;#开启自定义头信息的下划线
#wss协议转发 小程序里面要访问的链接
location /wss {
proxy_pass http://websocket;#代理到上面的地址去66.viwjc.cn
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
#https协议转发 小程序里面要访问的链接
## location /{
# proxy_pass http://web;#代理到原有的http的地址去
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# add_header Access-Control-Allow-Origin *;#跨域访问设置
# }
}