如果它们不存在,我需要重写任何根子域请求并附加语言环境参数。eg -> de.example.com 需要改写为 -> de.example.com/?locale=de。然后我将它代理到应用程序。
2个问题:
1)这是正确的方法吗?还是我应该在这里使用正则表达式?(新的,所以如果有其他问题,请lmk)
2)有没有办法记录位置块内的东西?无法在另一台服务器上使用相同的配置,日志记录会有所帮助。(例如,如果它不匹配,或者如果它在另一个位置块上匹配,则记录什么是 args)。它只需要发生在根页面上,所以这是我当前的配置
#existing default (nonsubdomain block)
server {
server_name _;
root /var/www/web_app;
try_files $uri/index.html $uri.html $uri @app;
location @app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}
#just added for subdomain
server {
server_name de.example.com;
root /var/www/web_app;
location / {
try_files $uri/index.html $uri.html $uri @app;
}
location @app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
location = / {
if ($args != locale=de ){
rewrite ^ $scheme://de.example.com/?locale=de permanent;
}
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}