0

ルート サブドメイン リクエストをすべて書き直し、ロケール パラメータがまだ存在しない場合は追加する必要があります。例 -> 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;
  }
}
4

1 に答える 1

1

1)これは正しいアプローチですか?または、ここで代わりに正規表現を使用する必要がありますか? (これは初めてなので、他の問題がある場合は、lmkしてください)

$arg_locale != deの代わりに使用する必要があり$args != locale=deます。ドキュメントを見てください: http://nginx.org/en/docs/http/ngx_http_core_module.html#var_arg_

2) ロケーション ブロック内のログを記録する方法はありますか? 別のサーバーで同じ構成を機能させるのに問題がある場合は、ログが役立ちます。(たとえば、一致しない場合、または別の場所ブロックで一致する場合は、引数が何であるかをログに記録します)。ルートページでのみ発生する必要があるため、これが私の現在の構成です

デバッグ ログ: http://nginx.org/en/docs/debugging_log.html

于 2013-11-15T12:48:56.970 に答える