公司现在的地图模块要换成其它平台,但是在访问的时候出现了跨域问题,由于用的是别人的地图,所以只能前端来解决跨域问题,目前只找到了Nginx反向代理一个来使用与前端的解决方案,由于本人是编程小白,也没接触过完全的前端跨域,做了三天也没有配置成功,学艺不精,求博客的朋友解答
本项目使用得是bootstrop框架和原生js编写,主要问题是Nginx在监听端口得时候,发现端口在被IIS使用,有没有什么办法使Nginx和IIS公用一个端口,现在是冲突得状态
把iis站点换一个端口 比如65506
server {
listen 65507;
server_name location;
location / {
proxy_pass http://127.0.0.1:65506/;
}
location /map {
proxy_pass http://地图地址;
}
}
通过访问http://localhost:65507 就可以访问iis站点 访问http://localhost:65507/map就可以访问地图
这样就把两个地址代理到同域下了
我不明白你的意思,我都程序挂在IIS上面,程序得端口就是65507,如果我换了IIS得端口得话,我得程序不是一起更换了吗,那不是还是监听不到程序
是这样,我大概懂了,问题在于我不能控制程序访问得端口,因为在我的认知里程序的端口和IIS的端口一直都是一致的,所以我不明白如何在IIS端口改变之后程序还能保持原有的端口
@C#HelloWord!!!:
1.反向代理就是将一个地址转发到另一个地址,这里就是将访问65507的请求转发到65506,访问65507就相当于访问65506了,端口可以随意更换的,如果iis端口没法换的话就换一个nginx监听的端口
2./map的意思是当访问/map的时候将请求转发到地图地址
3.你的前端程序本来是直接访问iis,现在加了nginx,前端程序就不再访问iis了,直接访问nginx
不知道你的前端是用什么写的,是否是前后端分离,需要看情况处理
@2316219: 谢谢大佬,我明白了
Nginx配置文件的server节点里如下配置:
location /api {
proxy_pass http://192.168.3.108:8081/api;
}
配置完以后重启Nginx,代码里用 /api 代理之前的请求地址
如 http://192.168.3.108:8081/api/login/get 改成 /api/login/get
我的前端页面在IIS使用了65507端口但是我不知道怎么同时使用Nginx去监听这个65507端口,他们会产生冲突