nginx反向代理tcp协议的80端口

人盡茶涼 提交于 2019-12-18 15:01:46

需求:内网有一台mqtt协议服务器,需要将外网的mqtt请求通过一台服务器代理到内网的mqtt服务器上。而这台代理服务器不会开放出了80之外的端口,所以只能使用80端口来转发mqtt请求。

步骤:
1.安装nginx,步骤略。

2.关闭80端口。
(1)通常80端口会被apache的httpd进程使用,查看进程使用80端口的命令是:

sudo netstat -apn|grep 80


(2)关闭使用80端口的进程,有两种方式,第一种是“kill -9 进程号”,这个命令好像杀不掉httpd进程,就是用第二种命令“pkill -9 httpd”。

3.修改nginx的配置文件。
(1)Nginx1.9 版本以后增加 stream模块,可以对tcp,udp请求进行代理和负载均衡了。
(2)打开配置文件,添加如下模块:

stream {
  server {
    listen 80;
    proxy_pass apllo;
  }

  upstream apllo {
    server 127.0.0.1:31613;
  }
}

然后删除http模块。
(3)重启nginx,命令是“nginx -s reload”,这个命令不一定好用,如果不好用的话,先用“pkill -9 nginx”命令杀掉nginx,再用“nginx -c /etc/nginx/nginx.conf”命令启动nginx。


注意:在启动nginx的过程中,可能会报一个端口80被占用的错误,是因为配置文件中http模块也在监听80端口,所以之后在stream模块监听80端口就报错了,解决办法就是删除http模块的配置。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!