用nignx解决前后端分离跨域问题 - 每日一招

Posted Sumslack团队

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用nignx解决前后端分离跨域问题 - 每日一招相关的知识,希望对你有一定的参考价值。

背景与需求描述 

在我们日常编写前后台分离的项目中,就会面临静态资源和后台服务不在一个域下,就存在跨域调用接口问题,有好几种办法可以解决:

  • 后台代码引入cors,引入服务调用来源检测,那么前端代码即可实现后台代码的跨域调用;

  • 使用nodejs的http-proxy-middle,引入中间层代理后台的http服务,因为nodejs和后台服务在同一个局域网;

  • 本文介绍的nginx方式,将静态资源和后台服务配置在一个nginx server里


代码实现 

 1server {
2        listen       80;
3        server_name  xx.yy.com;
4        charset utf-8;
5        index index.html index.htm;
6        root /home/html/project/xxx; #你的静态资源根目录
7        location / {
8            try_files $uri $uri/ /index.html =404;
9        }
10       location /api {  #你的后台服务地址
11        proxy_set_header Upgrade $http_upgrade;
12        proxy_set_header Connection "upgrade";
13        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
14        proxy_set_header Host $host;
15        proxy_http_version 1.1;
16        proxy_pass http://192.168.1.25:8787;
17       }
18       location /api2 {  #你的另外一个后台服务地址
19        proxy_set_header Upgrade $http_upgrade;
20        proxy_set_header Connection "upgrade";
21        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
22        proxy_set_header Host $host;
23        proxy_http_version 1.1;
24        proxy_pass http://192.168.1.53:8181;
25        rewrite ^/api2/user/signIn /user/signIn break; #定义一个重写规则
26       }
27}


那么在开发环境里怎么办?可以通过配置本地hosts文件解决~


 


以上是关于用nignx解决前后端分离跨域问题 - 每日一招的主要内容,如果未能解决你的问题,请参考以下文章

无需CORS,用nginx解决跨域问题,轻松实现低代码开发的前后端分离

nginx的基本使用及配置负载均衡解决前后端分离跨域问题

vue前后端分离解决跨域问题

前后端分离架构下的跨域问题

Spring Boot笔记-解决前后端分离在开发时的跨域问题

如何处理好前后端分离的 API 问题