nginx配置stream代理

项目中遇到某些服务在内网,需要外网访问的情况,需要配置代理访问。可用nginx搭建代理服务。

TCP代理

通过nginx的stream模块可以直接代理TCP服务,步骤如下:

  1. /etc/nginx/下新建proxy文件夹,用于存放代理配置。
  2. 此处以mysql为例,假设mysql服务在mysqlserver,新建mysqlproxy.conf文件,编辑以下内容:
conf 复制代码
    upstream mysqlproxy {
        server  mysqlserver:3306;
    }
    server {
        listen     3306;
        proxy_pass mysqlproxy;
        proxy_connect_timeout 1h;
        proxy_timeout 1h;
    }
  1. 编辑/etc/nginx/nginx.conf,最后添加如下配置,包含proxy目录内的所有配置。
conf 复制代码
    stream {
       include /etc/nginx/proxy/*.conf;
    }
  1. nginx -t检查nginx配置是否正确,没有问题则执行nginx -s reload重新加载nginx

可能出现的问题

  • unknown directive "stream" in /etc/nginx/nginx.conf
    对于比较老版本的nginx,可能会出现此错误。需要手动安装nginx的stream模块:
sh 复制代码
    yum install nginx-mod-stream
  • nginx: [emerg] bind() to 0.0.0.0:3306 failed (13: Permission denied)
    由于SELinux导致,查看端口是否已经被semanage 管理:
sh 复制代码
sudo semanage port -l | grep http_port_t

如果不在,需要添加:

sh 复制代码
sudo semanage port -a -t http_port_t  -p tcp 3306
  • (13: Permission denied) while connecting to upstream:[nginx]
    在nginx错误日志中看到以上错误,可能是SELinux安全机制导致,可执行:

    setsebool -P httpd_can_network_connect 1

相关推荐
空管电小二1 分钟前
【低压断路器的选择性配合】低压配电“安全后盾“:后备保护到底是什么?
运维·经验分享·安全·学习方法
奇妙之二进制19 分钟前
zmq源码分析之PUSH/PULL 模式的负载均衡分析
运维·网络·负载均衡
wheeldown24 分钟前
2026年4月横评三款主流远控软件实况实测:UU远程,Todesk,向日葵,综合性能 UU 远程表现最佳
linux·运维·服务器
pixcarp30 分钟前
Nginx实战部署与踩坑总结 附带详细配置教程
服务器·前端·后端·nginx·golang
小夏子_riotous1 小时前
Docker学习路径——8、Dockerfile
linux·运维·docker·容器·系统架构·centos·运维开发
2601_955256471 小时前
服务器日志管理最佳实践:logrotate配置详解、云日志服务对比与Docker日志限制方案
运维·服务器·docker
切糕师学AI1 小时前
Docker Compose 完全指南:从入门到实践
运维·docker·容器
叶子上的考拉1 小时前
解决远程连接服务器反应较慢问题
linux·运维·服务器
lazybird741 小时前
vmware装的ubuntu22.04, 在vmware中将磁盘由40G调整为50G后,ubuntu中还需要进行调整
linux·运维·服务器
IMPYLH1 小时前
Linux 的 stat 命令
linux·运维·服务器·bash