现公司有一台测试服务器,带公网 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.com 或 b.dev.test.com 得到的访问结果都是 a.dev.test.net:90,注释这一行配置就正常,加这个设置的目的是想获取用户端真实的请求网址,但是注释掉的话,应用获取到的请求域名是代理的域名,也就是.net 那个网址,请问如何处理?
1
kaneg 2017-11-25 16:21:20 +08:00
你可以试试把 $host 换成 $http_host
|
2
jowan OP @kaneg 不行 只要开启了那段或者改成$http_host 都是一样,不管任意子域名得到的访问结果都是 ip:90,也就是说域名在这个时候不起作用了
|
4
kaneg 2017-11-25 19:47:10 +08:00 1
|