秋yun 2024-05-22 11:36 采纳率: 0%
浏览 19

Nginx-四层代理,匹配不同的域名给不同的ip。

Nginx-四层代理,匹配不同的域名给不同的ip。
例如匹配sgs.prod.com域名代理到ip192.168.1.12:1883
匹配
sgssf.prod.com域名代理到ip192.168.2.11:1883。代理的是emqx:1883端口。

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2024-05-22 11:36
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    【您想要解决的问题】 您想要解决的问题是如何在Nginx中配置四层代理,使得不同的域名能够代理到不同的IP地址和端口。具体来说,您希望所有以"*sgs.prod.com"结尾的域名代理到192.168.1.12的1883端口,而所有以"*sgssf.prod.com"结尾的域名代理到192.168.2.11的1883端口。

    【问题出现原因】 这个问题出现的原因是Nginx默认的代理配置可能不支持根据域名进行分流到不同的后端服务器。通常,Nginx的代理配置是针对整个服务器或特定位置的请求,而不是根据请求的域名来进行分流。

    【问题解决方案】 要解决这个问题,您需要在Nginx的配置文件中使用proxy_pass指令,并结合正则表达式或域名匹配来指定不同的后端服务器。您可能还需要使用resolver指令来指定DNS服务器,以便正确解析域名。

    【提供代码】 以下是一个简化的Nginx配置示例,展示了如何根据不同的域名代理到不同的IP和端口:

    http {
        resolver 8.8.8.8 valid=300s;  # 使用Google的DNS服务器
    
        upstream sgs_prod_com {
            server 192.168.1.12:1883;
        }
    
        upstream sgssf_prod_com {
            server 192.168.2.11:1883;
        }
    
        server {
            listen 80;
    
            location / {
                if ($host ~* "\.sgs\.prod\.com$") {
                    proxy_pass http://sgs_prod_com;
                }
    
                if ($host ~* "\.sgssf\.prod\.com$") {
                    proxy_pass http://sgssf_prod_com;
                }
            }
        }
    }
    

    在这个配置中,resolver指令用于指定DNS服务器,upstream定义了两个后端服务器组,server块中的location指令使用正则表达式匹配域名,并根据匹配结果将请求代理到相应的后端服务器。

    【代码运行方式】 要运行这个配置,您需要:

    1. 将上述配置保存到Nginx的配置文件中,通常是/etc/nginx/nginx.conf或者某个.conf文件在/etc/nginx/sites-available/目录下。
    2. 测试配置文件是否有语法错误:sudo nginx -t
    3. 如果测试通过,重新加载Nginx配置:sudo systemctl reload nginxsudo service nginx reload

    【代码预期运行结果】 当您访问以"sgs.prod.com"结尾的域名时,请求将被代理到192.168.1.12的1883端口。当您访问以"sgssf.prod.com"结尾的域名时,请求将被代理到192.168.2.11的1883端口。

    【推荐相关链接】

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月22日

悬赏问题

  • ¥20 校园二手交易小程序搭建
  • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
  • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
  • ¥20 python,计算区位熵和扩张指数
  • ¥15 Python环境配置
  • ¥15 大四学生的困惑,有偿提问!
  • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?
  • ¥15 arduino测量电阻
  • ¥15 快手uid转快手号谁能解决 需要开发
  • ¥15 iis部署Django时css不生效,来个真人,ai不好使