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

相关推荐
艾莉丝努力练剑27 分钟前
【Linux网络】计算机网络入门:从背景到协议,理解网络通信基础
linux·运维·服务器·c++·学习·计算机网络
艾莉丝努力练剑27 分钟前
【Linux线程】Linux系统多线程(十):线程安全和重入、死锁相关话题
java·linux·运维·服务器·c++·学习·安全
运维老郭28 分钟前
Nginx vs Envoy:高并发负载均衡实战指南(含踩坑记录)
linux·运维
小娄~~28 分钟前
特殊进程-
linux·运维·服务器
AOwhisky32 分钟前
Kubernetes 学习笔记:Volume 存储卷与 ConfigMap 配置管理
linux·运维·笔记·学习·云原生·kubernetes
A_QXBlms37 分钟前
企销宝新版本技术解读新客运营多天计划与关键词自动化拉群实践
运维·自动化
江畔何人初39 分钟前
Kafka 消息队列概念及与RabbitMQ 的区别
运维·服务器·分布式·云原生·kafka·rabbitmq
nLif42 分钟前
linux-stable-sw-v4.19.180-sw64-2203.tar.gz 编译错误排查方法
linux·运维·服务器
智象科技1 小时前
AI重构IT运维:从被动救火到智能自治,这场革命已不可逆!
大数据·运维·人工智能·ai·重构·一体化运维
Taking_fish2 小时前
docker常见操作命令(基础服务搭建)
运维·docker·容器