私はnginxの設定に2つの場所があります:
location ^~ /media/ {
proxy_pass http://backend.example.com;
}
location ^~ /static/ {
proxy_pass http://backend.example.com;
}
これら2つを1つの場所に結合するにはどうすればよいですか?
私がすでにやったこと:
location ~ ^/(static|media)/ {
proxy_pass http://backend.example.com;
}
しかし、それは私にはうまくいきません。
また、バックエンドを使用しない場合、次の構成が正常に機能しています。
location ~ ^/(static|media)/ {
root /home/project_root;
}
更新(ログの一部の文字列)
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /content/11160/ HTTP/1.1" 200 5310 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/font-awesome/css/font-awesome.min.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/css/custom.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/53$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/colorbox/colorbox.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Sa$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/colorbox/jquery.colorbox-min.js HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/js/scripts.js HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537$
溶液
実際、私のソリューションはうまく機能します:
location ~ ^/(static|media)/ {
root /home/project_root;
}
この問題はバックエンドとは関係ありません。Guido Vaccarellaが正しく一致したことに気づいたlocation ~ ...
ので、私location ~ ...
は走る機会がありませんでした。
正規表現のプロキシパスが機能しない理由はわかりません。試してみるとどうなりますか?
—
気難しい
試してみると、フロントエンドのnginxは404エラーを投げます。
—
Vlad T.
locationステートメントの最後の)は質問のエラーですか、それとも構成ファイルにもありますか?
—
グイドヴァッカレラ
構成の残りの部分についてエラーを再確認してください。さらに、どこを見ているのか、何が欠けているのかを確認することで、404をスローする理由を調査することもできます。また、エラードキュメントが見つからない場合に404をスローする可能性もあるため、スローされた以前のエラーを調べる必要があります。
—
気難しい
エラーログからエラーを提供してください
—
Mohammad AbuShady