我有两个应用程序需要使用同一个 nginx 服务器来提供服务。
第一个应该在 help.example.com 下运行。另一个为每个客户提供一个域名,例如 foo.example.com 和 bar.example.com
我知道 nginx 优先考虑较长的服务器名称,但是我似乎找不到能帮助我的例子。
我尝试使用两个 nginx conf 文件,但失败了。以下是“规格”:
server {
listen 80;
server_name www.example.com.br example.com.br;
root /opt/apps/gsa-web/src/;
client_max_body_size 4G;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 1800;
proxy_pass http://localhost:8000/;
proxy_intercept_errors on;
}
error_page 500 502 503 504 /media/50x.html;
}
帮助文件
server {
listen 80;
server_name www.help.example.com.br help.example.com.br;
root /path-to-my-docs/docs_site/;
client_max_body_size 4G;
location / {
}
}
答案1
为此,在同一个配置文件中您将拥有:
server { listen 80;
server_name www.help.example.com.br help.example.com.br;
root /path-to-my-docs/docs_site/;
client_max_body_size 4G;
location / {
}
和
server { listen 80;
server_name *.example.com.br; # Notice the wildcard.
root /opt/apps/gsa-web/src/;
client_max_body_size 4G;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 1800;
proxy_pass http://localhost:8000/;
proxy_intercept_errors on;
}
error_page 500 502 503 504 /media/50x.html;
}
通配符将允许所有不支持的子域重定向到配置。进一步阅读:http://nginx.org/en/docs/http/server_names.html#wildcard_names