Nginx 反向代理设置,伪静态可能导致反向代理不生效

遇到跨域的问题:has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header

想用nginx的反向代理解决。

将 /api/ 目录的访问, 转发到 https://www.bdtest.com/api/

配置:

location ^~ /api/ {
        proxy_pass  https://www.bdtest.com/api/; 
  
        proxy_set_header Host $proxy_host; # 改变请求头值
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
}

 

如果用 thinkphp 之类的框架,设了伪静态

 

 

伪静态还要加 一条规则:

rewrite ^/api/(.*)$ /api/$1 last;

if (!-e $request_filename) {
  rewrite ^/api/(.*)$ /api/$1 last;
  rewrite ^(.*)$ /index.php?s=$1 last;
  break;
}

 

 

 

----

location ~ ^/(api|static|captcha)
{
    proxy_pass  http://www.test.top;
  
    proxy_set_header Host $proxy_host; # 改变请求头值
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header X-NginX-Proxy true;
}

 

posted @ 2021-03-10 15:54  kjcy8  阅读(1474)  评论(0编辑  收藏  举报