【发布时间】:2015-10-25 22:19:03
【问题描述】:
我目前处于需要获取/捕获子域并将该子域值传递给 Nginx 配置中的 proxy_pass 的情况。
例如
如果用户进入
http://google.com.mydomain.com
那么它应该做代理传递
proxy_pass http://www.google.com/;
在上面的例子中google.com 是sub-domain
这可行吗? 我如何在 nginx 中实现类似的功能?
目前我正在使用配置文件中的子域值是硬编码的,但是有很多子域,所以我需要这样做,但不知道正确的语法。
server {
listen 80;
server_name subdomain.domain.com;
charset utf-8;
location / {
proxy_pass http://www.subdomain/;
}
}
我使用 * 作为 A 记录将所有子域重定向到我的网络主机,即通配符 DNS。
更新:
我从https://stackoverflow.com/a/22774520/1642018找到了代码sn-p
server {
listen 80;
# this matches every subdomain of domain.
server_name .domain.com;
location / {
set $subdomain "";
if ($host ~* "^(.+)\.domain.com$") {
set $subdomain $1;
}
proxy_pass http://$subdomain;
}
}
但请求显示的是我的默认页面,该页面位于我的默认 Web 根目录中。
【问题讨论】:
-
这看起来可能是 XY 问题的情况:xyproblem.info。这是一个不寻常的要求。为什么不只服务子域?具体情况如何?很可能有比您所想的更好的解决方案
-
@Dayo 感谢您的回复,我想使用 nginx 作为我想要的任何域的反向代理,所以如果我输入 ebay.com.mydomain.com 它应该代理传递到 ebay.com 并充当反向代理并获得一个 ebay.com 页面。希望这会有所帮助。
-
这不会与几乎任何域。尤其是像 google 或 ebay 这样的“大”网站
标签: nginx reverse-proxy proxypass