Winginxで問題が発生する前にすべてが機能しました。 POSTメソッドでJqueryを使用してデータを送信すると、405(許可されていません)エラーが発生します。GETは完全に正常に動作します。
/ formcheck(forcmcheck.phpであり、それ自体で正常に動作します)からデータを要求すると、このエラーが発生します。 Nginxログでは、書き換えエンジンの数行を除いて何も変更していません。
ログを見ることができます:
127.0.0.1 - - [07/Jun/2017:15:14:06 +0300] "POST /formcheck HTTP/1.1" 405 575 "http://music-portfolio.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
127.0.0.1 - - [07/Jun/2017:15:16:35 +0300] "POST /formcheck HTTP/1.1" 405 575 "http://music-portfolio.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
127.0.0.1 - - [07/Jun/2017:15:17:32 +0300] "POST /formcheck HTTP/1.1" 405 575 "http://music-portfolio.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
データが転送された以外はすべて問題ありません。 nginxと仮想ホストの構成は次のとおりです:Nginx.conf: https://www.dropbox.com/s/oh2ifs8oul6jyrl/nginx.conf?dl=
仮想ホストの設定: https://www.dropbox.com/s/00it5g2npmrhbq2/music-portfolio.com.conf?dl=
POSTをブロックする方法と場所はわかりませんが、許可する必要があります... Thxに注意してください。
通常、これらのエラーメッセージは、NginxがPOST
requestで静的コンテンツを提供できないという制限が原因で発生します。この問題については、InValidLogic.comの記事 Serving Static Content Via POST From Nginx で説明されており、回避策が示されています。この場合、エラーメッセージをerror_page 405 =200 $uri;
に置き換えるか、静的コンテンツのプロキシ、POST
リクエストをGET
に変換します。
ただし、この場合、/formcheck
は実際には静的コンテンツではなくPHPスクリプトなので、POST
リクエストはNginxによって許可される必要があり、POST
データが受け取るので、GET
への変換もオプションではありません。
location
セクションが2つあるようです:
location / {
if ($Host ~ ^(www\.)?([a-z0-9\-\.]+)$){
root home/$2/public_html;
access_log logs/$2-access.log main;
}
}
location ~ \.php$ {
if ($Host ~ ^(www\.)?([a-z0-9\-\.]+)$){
root home/$2/public_html;
access_log logs/$2-access.log main;
}
if (!-e $document_root$document_uri){return 404;}
fastcgi_pass localhost:9071;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
ご覧のように、.php
で終わる場所のみがfastcgiで処理されますが、/formcheck
を含むその他すべては静的なコンテンツのみを提供するlocation /
に分類され、405
エラーが発生します。