1

要求されたドメインに応じて、nginx に適切な accept-language ヘッダーを設定してもらいたい:

www.domain.ru セットru-RU www.domain.com セットen-US www.domain.de セットde-DE

www.domain.eu は、Django がブラウザーからヘッダーを取得できるように何もしません。上記の 3 つのドメインでは、英語のユーザーが www.domain.ru を入力した場合でも、accept-language ヘッダーの変更を強制します (ロシア語を使用するように強制します)。

これが私のnginx構成です:

server {
listen 1.1.1.1;
server_name domain.eu www.domain.eu domain.de www.domain.de domain.com www.domain.com domain.ru www.domain.ru;
if($host ~* (.*)\.ru) {
set $http_accept_language 'ru-RU';
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-For  $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://127.0.0.1:8888/;
}
}

これは私の設定の一部です (gunicorn 経由で Django を実行しています)。accept-languageセッション言語が設定されていない場合、Django はヘッダーをチェックします。

4

1 に答える 1

4

試す

if ($host ~* \.ru$) {
  set $language 'ru-RU';
}
add_header Accept-Language $language;

$http_ で変数を設定する.... $http_ で始まる変数は nginx 自体によって解釈および設定されるため、おそらく最良のアイデアではありません (具体的には、使用した名前は「http ヘッダーのコンテンツ 'accept_language' を参照してくださいhttp: //wiki.nginx.org/HttpCoreModule#Variables )。あなたのセットまたは nginx のセットが勝つかどうかはわかりませんが、なぜ火遊びをするのですか?

于 2012-08-13T18:18:39.160 に答える