Nginx靜態資源POST請求返回405 Not Allowed的解決辦法
阿新 • • 發佈:2019-01-01
今天前端同事反應,有個頁面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原始碼不要慌,大膽去試吧!