1. 程式人生 > >Nginx靜態資源POST請求返回405 Not Allowed的解決辦法

Nginx靜態資源POST請求返回405 Not Allowed的解決辦法

今天前端同事反應,有個頁面post請求返回405狀態,get請求則返回資料。

原因是Nginx等絕大多數web伺服器,都不允許靜態檔案響應POST請求。

查看了好多部落格,3種解決辦法中只有最後一種有效,記錄一下。

編譯安裝的nginx原始碼目錄下,src/http/modules/ngx_http_static_module.c中,將以下程式碼註釋

/*  
if (r->method & NGX_HTTP_POST) { 
 return NGX_HTTP_NOT_ALLOWED; 
}
*/

然後通過nginx -V 找出原來的編譯引數,重新編譯就好。編譯完成後make,不用執行make  install.

直接重新命名/usr/local/nginx/sbin/nginx為/usr/local/nginx/sbin/nginx.old

cp  objs/nginx  /usr/local/nginx/sbin/nginx
kill -USR2 `cat /usr/local/webserver/nginx/nginx.pid`           #更新配置檔案
kill -QUIT `cat /usr/local/webserver/nginx/nginx.pid.oldbin`    #優雅的關閉

完美解決了。

聽到要改nginx原始碼不要慌,大膽去試吧!