ルート サブドメイン リクエストをすべて書き直し、ロケール パラメータがまだ存在しない場合は追加する必要があります。例 -> de.example.com は -> de.example.com/?locale=de のように書き換える必要があります。次に、それをアプリにプロキシします。
2 つの質問:
1)これは正しいアプローチですか?または、ここで代わりに正規表現を使用する必要がありますか? (これは初めてなので、他の問題がある場合は、lmkしてください)
2) ロケーション ブロック内のログを記録する方法はありますか? 別のサーバーで同じ構成を機能させるのに問題がある場合は、ログが役立ちます。(たとえば、一致しない場合、または別の場所ブロックで一致する場合は、引数が何であるかをログに記録します)。ルートページでのみ発生する必要があるため、これが私の現在の構成です
#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;
}
}