内网Linux下安装Nginx1.23,添加stream模块实现tcp/udp代理转发
环境:centos7.6
ngx_stream_core_module 这个模块在1.9.0版本后将被启用。但是并不会默认安装,需要在编译时通过指定 --with-stream 参数来激活这个模块,window下并不支持udp协议(支持tcp协议)。
一、下载nginx1.23.0
nginx官网下载nginx1.23.0到本地,拷贝nginx-1.23.0.tar.gz和所需依赖包的rpm文件(放在rpm文件中)到内网LInux下的/root/soft目录中。
二、安装nginx包
1、安装rpm依赖包
yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel gzip gcc gcc-c++ make wget httpd-tools vim --downloadonly --downloaddir=/root/soft/rpm/
拷贝rpm包到内网机器上
rpm -ivh /root/soft/rpm/*.rpm --force --nodeps
2、解压nginx包到/usr/local/目录下
tar -zxvf nginx1.23.0.tar.gz -C /usr/local/
3、添加用户,用户组
groupadd nginx
useradd nginx -g nginx -s /sbin/nologin -M
4、新增stream模块,编译与安装nginx
编译nginx,加入stream模块,https模块和状态监控模块一起编译,并指定用户名,用户组
cd /usr/local/nginx1.23.0
./configure --with-stream --with-stream_ssl_module --with-http_stub_status_module --user=nginx --group=nginx
执行编译,安装
make && make install
查看nginx版本以及新增模块
cd /usr/local/nginx/sbin
./nginx -V
5、修改配置文件
vi/usr/local/nginx/conf/nginx.conf
点击查看代码
#修改配置,支持tcp/udp的stream模块配置和http的配置属于同级
stream {
server {
#添加udp,表示监听12345端口,向192.168.1.100:3306发送udp包
listen 12345 udp;
proxy_pass 192.168.1.100:3306;
}
server {
#不添加默认为tcp协议,表示监听12346端口,向192.168.1.101:3306发送tcp包
listen 12346;
proxy_pass 192.168.9.101.3:3306;
}
}
6.重载nginx
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
nginx -s reload
7、访问nginx
在浏览器地址栏输入你的Linux虚拟机的静态ip,会跳转到nginx的欢迎页面。
8、将nginx作为服务启动,做开机自启动
cd /usr/lib/systemd/system/
vi nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启动nginx服务(此时需要先用ps查看nginx进程是否已存在,若已存在,则服务会启动失败。启动服务前必须先将nginx进程kill掉):
pkill -9 nginx
设置开机自启动:
systemctl enable nginx
查看服务状态:
systemctl status nginx