nginx遇到post请求静态文件会得到405错误
用upstream 把post转成get方式
添加 nginx.conf
或者
完整的如下:
a.c的代码
用upstream 把post转成get方式
添加 nginx.conf
- 添加
- upstream static_backend {
- server localhost:80;
- }
- server {
- ....
- 添加
- error_page 405 =200 @405;
- location @405 {
- root html;
- proxy_method GET;
- proxy_pass http://static_backend;
- }
或者
- location / {
- root html;
- index index.html index.htm index.php;
- error_page 405 =200 http://$host$request_uri;
- }
完整的如下:
- #user nobody;
- worker_processes 1;
- #error_log logs/error.log;
- #error_log logs/error.log notice;
- #error_log logs/error.log info;
- #pid logs/nginx.pid;
- events {
- worker_connections 1024;
- }
- http {
- include mime.types;
- default_type application/octet-stream;
- #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- # '$status $body_bytes_sent "$http_referer" '
- # '"$http_user_agent" "$http_x_forwarded_for"';
- #access_log logs/access.log main;
- sendfile on;
- #tcp_nopush on;
- #keepalive_timeout 0;
- keepalive_timeout 65;
- #gzip on;
- upstream static_backend {
- server localhost:80;
- }
- server {
- listen 80;
- server_name localhost;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- location / {
- root html;
- index index.html index.htm;
- }
- #error_page 404 /404.html;
- # redirect server error pages to the static page /50x.html
- #
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
- error_page 405 =200 @405;
- location @405 {
- root html;
- proxy_method GET;
- proxy_pass http://static_backend;
- }
- # proxy the PHP scripts to Apache listening on 127.0.0.1:80
- #
- #location ~ \.php$ {
- # proxy_pass http://127.0.0.1;
- #}
- # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
- #
- #location ~ \.php$ {
- # root html;
- # fastcgi_pass 127.0.0.1:9000;
- # fastcgi_index index.php;
- # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
- # include fastcgi_params;
- #}
- # deny access to .htaccess files, if Apache's document root
- # concurs with nginx's one
- #
- #location ~ /\.ht {
- # deny all;
- #}
- }
- # another virtual host using mix of IP-, name-, and port-based configuration
- #
- #server {
- # listen 8000;
- # listen somename:8080;
- # server_name somename alias another.alias;
- # location / {
- # root html;
- # index index.html index.htm;
- # }
- #}
- # HTTPS server
- #
- #server {
- # listen 443;
- # server_name localhost;
- # ssl on;
- # ssl_certificate cert.pem;
- # ssl_certificate_key cert.key;
- # ssl_session_timeout 5m;
- # ssl_protocols SSLv2 SSLv3 TLSv1;
- # ssl_ciphers HIGH:!aNULL:!MD5;
- # ssl_prefer_server_ciphers on;
- # location / {
- # root html;
- # index index.html index.htm;
- # }
- #}
- }
a.c的代码
- #include
- #include
- #include
- #include
- #include
- int main(argc,argv){
- int s,len;
- struct sockaddr_in remote_addr;
- char buf[BUFSIZ];
- memset(&remote_addr,0,sizeof(remote_addr));
- remote_addr.sin_family=AF_INET;
- remote_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
- remote_addr.sin_port=htons(8000);
- if((s=socket(AF_INET,SOCK_STREAM,0))<0)
- {
- perror("socket");
- return 1;
- }
- if(connect(s,(struct sockaddr *)&remote_addr,sizeof(struct sockaddr))<0)
- {
- perror("connect");
- return 1;
- }
- printf("connect to server\n");
- len=recv(s,buf,BUFSIZ,0);
- buf[len]='\0';
- printf("%s",buf);
- while(1){
- printf("enter string to end:");
- scanf("%a",buf);
- if(!strcmp(buf,"quit"))
- break;
- len=send(s,buf,strlen(buf),0);
- len=recv(s,buf,strlen(buf),0);
- buf[len]='\0';
- printf(" received:%s\n",buf);
- }
- close(s);
- return 0;
- }