使用nginx反向转发一部分api链接。但是遇到了405 Method Not Allowed问题。
仔细观察了一下,发现是Cors跨域请求OPTIONS方法的时候,nginx不允许OPTIONS方法导致的。
解决思路:
1、405返回200码
2、405时,response返回Cors协议允许的Header
配置如下:
server {
listen 8080;
server_name abc.com;
error_page 405 =200 @405;
location / {
root D:/b/dist;
index index.html index.htm;
}
location ~ ^/(api)/ {
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 18000;
proxy_send_timeout 18000;
proxy_read_timeout 18000;
proxy_pass http://127.0.0.1:9090;
}
location @405{
add_header Content-Length 0;
add_header Content-Type text/plain;
add_header Access-Control-Allow-Headers *;
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Allow-Origin *;
return 200;
}
}
-
参考文献: