V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
jowan
V2EX  ›  NGINX

各位大佬看下我这个 Nginx 的泛解析反代咋处理?

  •  1
     
  •   jowan · 2017-11-25 15:02:51 +08:00 · 3169 次点击
    这是一个创建于 2546 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现公司有一台测试服务器,带公网 ip 的,但运营商没开 80 因为微信 web 应用必须要 80 才可以,也就无法直接在微信里面跑

    因为我们测试的服务器要上线 N 多个测试项目,之前有 80 端口的时候直接将域名泛解析到服务器,然后服务器端绑各自子域名就可以用了

    现在的方案: 将*.dev.test.com 泛解析到阿里云的开 80 的公网服务器, 将*.dev.test.net 泛解析到测试服务器,测试服务器每个项目绑定各自子域名 访问任意的 .dev.test.com ,阿里云的 nginx 都将自动反代带.dev.test.net:90

    现做了如下配置,

    server {
       listen       80;
       server_name  ~^(?<subdomain>.+)\.dev\.test\.com$;
       location / {
          resolver 114.114.114.114;
          proxy_pass http://$subdomain.dev.test.net:90;
          proxy_set_header   Host    $host;
          proxy_set_header   X-Real-IP   $remote_addr;
          proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
       }
    }
    

    但是只要设置了请求域名如下配置

    proxy_set_header   Host    $host;
    

    泛解析就起不到作用,不管访问什么,比如 a.dev.test.comb.dev.test.com 得到的访问结果都是 a.dev.test.net:90,注释这一行配置就正常,加这个设置的目的是想获取用户端真实的请求网址,但是注释掉的话,应用获取到的请求域名是代理的域名,也就是.net 那个网址,请问如何处理?

    5 条回复    2017-11-27 08:06:17 +08:00
    kaneg
        1
    kaneg  
       2017-11-25 16:21:20 +08:00
    你可以试试把 $host 换成 $http_host
    jowan
        2
    jowan  
    OP
       2017-11-25 16:36:04 +08:00
    @kaneg 不行 只要开启了那段或者改成$http_host 都是一样,不管任意子域名得到的访问结果都是 ip:90,也就是说域名在这个时候不起作用了
    Kokororin
        3
    Kokororin  
       2017-11-25 19:38:36 +08:00
    试试 /t/308140
    kaneg
        4
    kaneg  
       2017-11-25 19:47:10 +08:00   ❤️ 1
    @jowan

    很可能你后端的*.dev.test.net 也用的虚拟主机,在这种情况下,要把前端的 server name 也配置到后端的 server alias 中去
    jowan
        5
    jowan  
    OP
       2017-11-27 08:06:17 +08:00
    @kaneg 确实是这个原因,感谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5391 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:49 · PVG 13:49 · LAX 21:49 · JFK 00:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.