关于nginx 负载均衡前端请求后端webApi(本地)的问题处理
ip-->网关设定80转发---> 192.168.1.200的80端口
.200的服务器上部署IIS站点3个(1个后台管理8080,1个前端大屏9900,1个给前端大屏提供webApi 58000)
只有一个域名(wzdhhkan.cn),nginx通过在不同的前缀选择不同的后端接口
nginx配置
监听80端口,如果是sys.则转发到8080上面
如果是bigS 则转发到9900上面
一开始配置ngnx很简单,部署完成后将sys.后台正常;bigS.登录页面也正常,但是点击登录的时候出问题了一直提示:
from origin http://bigS.wzdhhkan.cn has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space loopback
请求已被CORS策略阻止,不是安全的上下文,且资源位于更私密的空间环回中;
先把weiApi中的过滤策略调整了-->不行,后来把策略取消掉,不在进行过滤也不行;
后来把前端的路由有localhost:58000 修改为 http://bigS.wzdhhkan.cn --> 也不行
再后来把58000也部署到ngnx中(原来我以为前端直接访问本地没问题的) -->调整为 /api/ 进行转发到:58000
这样调整完成后,重启后可以了,下面是我能正常应用后的配置如下:
server {
listen 80 default_server;
server_name _ *.wzdhhkan.cn;
return 301 http://sys.wzdhhkan.cn;
}
server {
listen 80;
server_name bigS.wzdhhkan.cn;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
add_header Access-Control-Allow-Origin * always;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS,PUT,DELETE always;
add_header Access-Control-Allow-Headers * always;
# API接口:/api/ 转发到58000后端,放到前面
location /api/ {
proxy_pass http://192.168.1.200:58000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_bind 192.168.1.200;
}
location / {
proxy_pass http://192.168.1.200:9900;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 =302 http://bigS.wzdhhkan.cn/login;
}
总结:
1、前端路由使用域名的方式;
2、nginx中配置使用/api/的方式转发到58000
3、nginx中转发使用IP地址转发
浙公网安备 33010602011771号