0

nginx の設定でこの if ステートメントを適用するのが困難です:

location / {
    break;
    proxy_pass                  http://127.0.0.1:4444;
    proxy_redirect              off;
    proxy_set_header            Host                        $host;
    proxy_set_header            X-Real-IP               $remote_addr;
    proxy_set_header            X-Forwarded-For         $proxy_add_x_forwarded_for;

    if ($arg_charset ~* windows-1251) {
        charset                     windows-1251;
    }
    source_charset              utf-8;
}

$arg_charset ~* "windows-1251" と $arg_charset ~* / を試しました。Windows-1251。/ および他のすべてのソリューション。どれも機能しません... ifステートメントを削除すると、必要な結果が得られるため、問題はifステートメント条件内にあります。

それはバグですか、それとも間違っていますか?

4

1 に答える 1

4

http://wiki.nginx.org/IfIsEvilが説明しているようにif、 a 内のブロックlocationは、returnまたはrewrite

if をserverブロックに直接移動してみてください(if問題のない場所)、それを修正する必要があります。

charsetserverblock でディレクティブを使用しないように更新:

次のようなことを試してください。

set $requestedcharset utf-8;
if ($arg_charset ~* windows-1251) { set $requestedcharset windows-1251;}

location / {
  source_charset utf-8;
  charset $requestedcharset;
  #add in the rest of your / config
}

注:httpブロックにwin-utfが含まれていることを確認してくださいcharset_map(私のdebianシステムでは、つまり.include /etc/nginx/win-utf;

于 2012-10-27T11:39:47.410 に答える