NGINX: 405 Not Allowed

疑难杂症   nginx 405  

问题

  • 默认的nginx上,是拒绝通过post方式访问静态页面,但是在实际应用nginx的过程中,可能需要通过post请求静态页面

  • curl -d POST http://www.test.com/test.ini

<html>  
<head><title>405 not allowed</title></head>  
<body bgcolor="white">  
<center><h1>405 not allowed</h1></center>  
<hr><center>nginx</center>  
</body>  
</html>  

解决方法

  • 通过proxy_pass 转发静态文件接收的POST请求到GET方式
upstream static_backend {  
    server www.test.com;
}

server  
{
 listen       80;
 server_name  www.test.com;
 index index.html index.htm index.php;
 root  /data/www/test/;
 error_page 405 =200 @405;
 location @405
        {
        root /data/www/test/;
        proxy_method GET;
        proxy_pass http://static_backend;
   }