Nginx 反向代理跨域问题解决

单域名

前端网站地址:http://xxxx.vip  
服务端代理网址:http://api.xxxx.vip
服务端地址:localhost:8085

复制代码
server {
        listen       80;
        server_name  api.xxxx.vip;
        location  / {
          if ($request_method = 'OPTIONS') {
              add_header Access-Control-Allow-Origin 'http://xxxx.vip';
              add_header Access-Control-Allow-Headers 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Requested-With';
              add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';
              add_header Access-Control-Allow-Credentials 'true';
              # 允许客户端Js读到Content-Disposition 用于文件下载读取文件名
              add_header Access-Control-Expose-Headers 'Content-Disposition';
              return 204;
          }
          if ($request_method != 'OPTIONS') {
              add_header Access-Control-Allow-Origin 'http://xxxx.vip' always;
              add_header Access-Control-Allow-Credentials 'true';
          }
          proxy_pass  http://localhost:8085;
        }
}
复制代码

 

或者

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
        listen       80;
        server_name  api.xxxx.vip;
        location  / {
          add_header Access-Control-Allow-Origin 'http://xxxx.vip' always;
          add_header Access-Control-Allow-Headers 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Requested-With';
          add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';
          add_header Access-Control-Allow-Credentials 'true';
          # 允许客户端Js读到Content-Disposition 用于文件下载读取文件名
          add_header Access-Control-Expose-Headers 'Content-Disposition';
          if ($request_method = 'OPTIONS') {
              return 204;
          }
          proxy_pass  http://localhost:8085;
        }
}

指定多个域名跨域配置

前端网站地址:http://xxxx.vip  http://xxxx.cc
服务端代理网址:http://api.xxxx.vip
服务端地址:localhost:8085

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
map $http_origin $allow_origin {
    default "";
    "~^(https?://localhost(:[0-9]+)?)" $1;
    "~^(https?://127.0.0.1(:[0-9]+)?)" $1;
    #"~^https://xxxx.vip" https://xxxx.vip;
    #"~^https://m.xxxx.vip" https://m.xxxx.vip;
    #"~^(https?://[\w]+.xxxx.vip)" $1;
 
    "~^(https?://([\w]+.)?[\w]+.xxxx.cc)" $1;
    "~^(https?://([\w]+.)?[\w]+.xxxx.vip)" $1;  #允许一级和二级域名
}
 
server {
        listen       80;
        server_name  api.xxxx.vip;
        location  / {
          add_header Access-Control-Allow-Origin $allow_origin;
          add_header Access-Control-Allow-Headers 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Requested-With';
          add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';
          add_header Access-Control-Allow-Credentials 'true';
          # 允许客户端Js读到Content-Disposition 用于文件下载读取文件名
          add_header Access-Control-Expose-Headers 'Content-Disposition';
          if ($request_method = 'OPTIONS') {
              return 204;
          }
          proxy_pass  http://localhost:8085;
        }
}

 

posted @   Hexrui  阅读(566)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
返回顶部
点击右上角即可分享
微信分享提示