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

相关推荐
可口码农7 分钟前
Kwrt软路由从“路由模式”改为“交换机模式”,再改为旁路由模式接管 DHCP 的透明网关模式。
运维·服务器
奶油话梅糖9 分钟前
解决Windows SSH无法连接老旧网络设备(路由器交换机)
运维·windows·ssh
广州服务器托管13 分钟前
[2025.12.25] Win10.LTSC2021极速响应养老版19045.3208轻精简全功能【可更新】PIIS出品 老电脑福利 老旧电脑流畅运行
运维·人工智能·计算机网络·云计算·电脑·可信计算技术
峰顶听歌的鲸鱼20 分钟前
20.MySql数据库
运维·数据库·笔记·mysql·云计算·学习方法
G_H_S_3_22 分钟前
【网络运维】SQL 语言:MySQL数据库基础与管理
运维·网络·数据库·mysql
清平乐的技术专栏23 分钟前
电脑参数自检-BIOS
运维·服务器·电脑
翼龙云_cloud25 分钟前
亚马逊云渠道商:用 AWS Lightsail 30 分钟搭建专业作品集网站
运维·服务器·云计算·aws
峰顶听歌的鲸鱼33 分钟前
19.docker 图形化管理界面
运维·笔记·docker·容器·学习方法
杰克崔44 分钟前
localtime接口与localtime_r接口
linux·运维·服务器·车载系统
HalvmånEver1 小时前
Linux:简介(进程间通信一)
linux·运维·服务器