森哥瞧世界

您现在的位置是:首页>文档内容页

文档详情

解决跨域问题之Nginx配置提炼

jeson 2020-04-22 17:46:28 WEB服务3885
很早前,在本站中,森哥有发过一篇关于解决跨域的问题。今天一个同事,刚好也遇到这个问题,但使用之前的方案,一直没有解决。所以,后面我提供了另一种解决跨域的问题。思路很简单,就是把外调的改为同域名下调用即可。

过程就不多说了,直接上配置文件。

就是这么直接,就是这么有尿性。

习惯,先将api接口单独弄一个upstream出来。后面调用的时候,就简单多了。

cat /etc/nginx/conf.d/upstream.conf
upstream ups_api {
   server 127.0.0.1:6789;

#    check interval=3000 rise=2 fall=3 timeout=1000 type=http default_down=true;
#    check_http_send "GET /api/index/friend HTTP/1.0\r\n\r\n";
}

在要调用的接口的所对应的网站的Nginx配置文件中,在server{}中加入下面的配置内容:

    location ^~ /api{
       proxy_set_header  REMOTE-HOST $remote_addr;
       # rewrite  ^/api/(.*)$ /$1 break;        //可根据情况而定,一般可以不需要
       proxy_pass http://ups_api/;
       proxy_set_header   Upgrade $http_upgrade;
       proxy_set_header   Connection keep-alive;
       proxy_set_header   Host $host;
       proxy_cache_bypass $http_upgrade;
       proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header   X-Forwarded-Proto $scheme;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_next_upstream off;
       proxy_connect_timeout   300s;
       proxy_read_timeout      300s;
       proxy_send_timeout      300s;
       client_max_body_size 16m;
       client_body_buffer_size 512k;
   }

好了,直接保存退出,并重新加载或重启Nginx即可。

然后测试的时候,就是域名后面直接加上/api相关接口调用地址就行。

在这里要提到一个注意点:

在代码中,关于调用接口的时候的,直接使用本站域名后面接上api的调用地址,

不能再使用原始真实的接口地址。

比如,调用的时候,直接使用:https://domain/api/customer/info

而不能使用:http://127.0.0.1:6789

这个要注意,否则依然是跨域的。


文章评论

Cancel the reply
Login Participate In Comments

Review(