0

私は、グルジア文字の URL を含む私のサイトに nginx とレールを使用してい ます。 83%AA%E1%83%AE%E1%83%90%E1%83%93%E1%83%94%E1%83%91%E1%83%94%E1%83%91%E1%83% 98 主に完全に機能していますが、切り捨てられた URL のリクエストを受け取ることがあります。 AA%E1%83%AE%E1%83%90%E1%83%93%E1%83%94%E1%83%91%E1%83%94%E1%83%91%E1%83%9 (ご覧のとおり、%9) または 2 の後にあるはずです - http://gancxadebebi.ge/ka/%E1%83%92%E1%83%90%E1%83%9C%E1%83%AA% E1%83%AE%E1%83%90%E1%83%93%E1%83%94%E1%83%91%E1%83%94%E1%83%91%E1%83%98?mc= mini+aipadi&search=%E1%83%AB%E1%83%98%E1%83%94%E1%83%91%E1%83%9

get パラメーター (上記の最初の URL) がない場合に対処することに成功し、その場合に / へのリダイレクトを作成すると、この行が nginx error.log 2013/09/24 00:46:53 [アラート] に追加されます63547#0: *19359227 pcre_exec() が失敗しました: -10 on "/ka/განცხადებებ�" on ""、クライアント: aa.bb.cc.dd、サーバー: gancxadebebi.ge、リクエスト: "GET /ka/%E1 %83%92%E1%83%90%E1%83%9C%E1%83%AA%E1%83%AE%E1%83%90%E1%83%93%E1%83%94%E1%83 %91%E1%83%94%E1%83%91%E1%8 HTTP/1.1"、ホスト: "gancxadebebi.ge"

しかし、get パラメータが切り捨てられた 2 番目の URL については、400 の不正な要求ページを生成するものを処理できません。そのようなリクエストは、nginx access.log aa.bb.cc.dd にこの行を追加しました - - [24/Sep/2013:00:48:47 +0200] "GET /ka/%E1%83%92%E1%83% 90%E1%83%9C%E1%83%AA%E1%83%AE%E1%83%90%E1%83%93%E1%83%94%E1%83%91%E1%83%94% E1%83%91%E1%83%98?mc=mini+aipadi&search=%E1%83%AB%E1%83%98%E1%83%94%E1%83%91%E1%83% HTTP/1.1 " 400 5 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (Gecko のような KHTML) Chrome/29.0.1547.76 Safari/537.36"

これは、nginx がリクエストを受け入れた後、Rails がそれを解決できなかったことを意味しますか?

問題がレールに起因するのか、nginx に起因するのかはわかりません。最初のURLについては、nginx confで解決しました ここのconfの一部

access_log /var/log/nginx/gancx.access.log;
error_log /var/log/nginx/gancx.error.log;

client_body_in_file_only clean;
client_body_buffer_size 32K;
charset UTF-8;
source_charset UTF-8;
client_max_body_size 300M;



error_page  400 404         = @notfound;
error_page  500 502 504 = @server_error;
error_page  503         = @maintenance;

location @notfound {
  rewrite ^(.*)$ $scheme://$host permanent;
}

location @server_error {
    rewrite ^(.*)$ $scheme://$host permanent;
}

location @maintenance {
    rewrite ^(.*)$ $scheme://$host permanent;
}
sendfile on;
send_timeout 300s;

location / {
    proxy_pass http://gancx;
    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;
    charset UTF-8;
    client_max_body_size 7m;
    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
}

ご協力いただきありがとうございます

4

0 に答える 0