2 reverse-proxy nginx proxypass
我目前的情况是,我需要获取/捕获子域并将该子域值传递给 Nginx 配置中的 proxy_pass 。
例如
如果用户输入
http://google.com.mydomain.com
Run Code Online (Sandbox Code Playgroud)
那么它应该做代理传递
proxy_pass http://www.google.com/;
Run Code Online (Sandbox Code Playgroud)
在上面的例子中google.com是sub-domain
这可行吗?我怎样才能在 nginx 中实现类似的目标?
目前我正在使用配置,其中子域值在配置文件中硬编码,但有很多子域,所以我需要这样做,但不知道正确的语法。
server {
listen 80;
server_name subdomain.domain.com;
charset utf-8;
location / {
proxy_pass http://www.subdomain/;
}
}
Run Code Online (Sandbox Code Playgroud)
我使用 * 作为 A 记录将所有子域重定向到我的网络主机,即通配符 DNS。
更新:
我从/sf/answers/1594216431/找到了代码片段
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;
}
}
Run Code Online (Sandbox Code Playgroud)
但请求显示的是我的默认页面,该页面位于我的默认网络根目录中。
两件事情。
1- 解析器(您的 nginx 的 dns 服务器,用于解析 google.com,您可以在主机上添加,也可以添加解析器语句)
2-您需要解决您的客户如何处理不同域的问题,我的意思是 google.com 与 google.com.ar 或 google.fr 不同)
在此示例中,我为您的示例 google.com 做了工作
worker_processes 4;
error_log /var/log/nginx/error.log;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
set $subdomain "";
if ($host ~* "^(.+)\.domain.com$") {
set $subdomain $1;
}
resolver 8.8.8.8;
proxy_pass "http://$subdomain.com";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这个配置对您有所帮助。
| 归档时间: |
|
| 查看次数: |
6312 次 |
| 最近记录: |