1

ほぼ同じnginx/HttpUploadProgressModule構成がローカルUbuntuで機能し、Linodeサーバーでは機能しない理由を理解しようとしています。

簡単に言うと、nginxはHttpUploadProgressModuleモジュールのサポートを含めるためにソースから構成されました((http://wiki.nginx.org/HttpUploadProgressModule#Installation、https://github.com/masterzen/nginx-upload-progress-module

同じ1.2.4nginxが使用され、ローカルとサーバーの両方で同じ仮想ホスト構成が使用されました。サーバーにnginxをリロードするときにエラーが発生しました:

Restarting nginx: nginx: [emerg] unknown directive "  " in /etc/nginx/sites-enabled/example.com:12
location ~ (?<upload_form_uri>.*)/x-progress-id:(?<upload_id>\d*) {
#Line 12 below #
rewrite ^ $upload_form_uri?X-Progress-ID=$upload_id; 
# Line 12 above #
}

しかし、ローカルでは問題なく動作します。以下はnginx-Vとldd /usr/sbin/nginx比較であり、これまでのところGoogle検索もどこにも行きませんでした。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

4

1 に答える 1

1

どうやら、nginx 構成パーサーが正常に機能しない原因となっているようです。

名前付き後方参照を含む正規表現が私の注意を引きました。Nginx は PCRE ライブラリを使用して正規表現を解析しているため、これは有効な構文である必要があります。

これを参照して、グループのキャプチャと名前付き/名前なしの後方参照を理解してください http://regular-expressions.mobi/named.html

これを試して

location ~ (.*)/x-progress-id:([0-9]+) {
    set $upload_form_uri $1;
    set $progress_id $2;
    rewrite .* $upload_form_uri?X-Progress-ID=$progress_id;
}

同じ意味ですが、もう少し基本的な構文です。これで解決しない場合は、さらに調査が必要になります。

于 2012-12-23T09:48:05.617 に答える