通过nginx反向代理实现接口跨域问题
缘起
开发公司的一个项目时采用的是RESTFUL接口形式,token等权限验证信息是注入在http请求的header头部的.因为是在内网进行调试,接口的域名为a.com
,为了方便在家的时候进行开发调试,将接口挂在了外网.因80端口被运营商限制,于是使用了另外的端口.而我在本地虚拟了一个b.com
的域名,请求,直接显示跨域...
尝试一
在我的b.com
域名下使用了一个php页面来进行301跳转,但是发现很是麻烦,需要提取出我实际需要的url再进行转发,该方案被放弃
尝试二
本地用nginx绑定了一个非80端口的a.com
域名,然后nginx内做了反向代理到接口,结果发现忘记了域名相同端口不同也算跨域,该方案直接被打死= =
尝试三
受方案一和方案二的灵感,想到为何不直接使用nginx反向代理到接口服务器?使用我本地a.com
中一个永远不会存在的url作为接口的跳板,然后nginx讲该url反向代理到接口服务器.ok,尝试,成功!
附上nginx配置信息:
server {
listen 80;
server_name a.com;
root /wwwroot/test;
autoindex off;
index index.html index.htm index.php;
# 将a.com/api的所有请求反向代理到b.com:1234
location /api {
proxy_pass b.com:1234;
}
location ~ /\.ht {
deny all;
}
}