ngnix 利用proxy_pass 后端接口跳转第三方地址接口,前端页面访问出现跨域、404问题
1、前端地址:a.aaa.com
2、后端接口:b.aaa.com 请求转发:b.ccc.com
server {
listen 80;
listen 443 ssl;
server_name b.aaa.com;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
# gzip config
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# Begin以下跨域解决问题:proxy_pass The 'Access-Control-Allow-Origin' header contains multiple values
proxy_hide_header Access-Control-Allow-Origin;
proxy_hide_header Access-Control-Allow-Methods;
proxy_hide_header Access-Control-Allow-Headers;
proxy_hide_header Access-Control-Allow-Credentials;
# End跨域解决问题
add_header Access-Control-Allow-Origin 'https://a.aaa.com';
add_header Access-Control-Allow-Headers 'x-token,content-type,x-sys-id';# 必须带自定义头
add_header Access-Control-Allow-Methods '*';
add_header Access-Control-Allow-Credentials 'true';
add_header Access-Control-Max-Age 3600;
# 单独处理 `OPTIONS` 预检请求,直接返回 204
if ($request_method = 'OPTIONS') {
return 204;
}
proxy_pass http://b.ccc.com/;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $proxy_host;# 不能$host,否则会返回404
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
}
#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;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
浙公网安备 33010602011771号