nginx 80端口代理locahost:81,如何隐藏访问时URI的81端口?

1 环境描述-- k8s内部3个服务映射到 node上分别是 abc服务

upstream a {

server 192.168.71.210:30080;
server 192.168.71.213:30080;
server 192.168.71.214:30080;
ip_hash;
        }

upstream b {

server 192.168.71.210:30081;
server 192.168.71.213:30081;
server 192.168.71.214:30081;
ip_hash;
    }

upstream c {

server 192.168.71.210:30082;
server 192.168.71.213:30082;
server 192.168.71.214:30082;
ip_hash;
    }

2 需求

2.1通过K8S外部nginx反代负载着3个服务
2.2访问方式192.168.100.100/a 192.168.100.100/b 192.168.100.100/c

3 外部nginx192.168.100.100配置文件

3.1 负载设置server在上面我就不写了
3.2 nginx虚拟机配置
server {

listen 80;
server_name localhost;
#index index.html index.htm index.php;
server_name_in_redirect off;
proxy_set_header Host $host:$server_port;
    #server_name_in_redirect off;
    #proxy_set_header   Cookie $http_cookie;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location /a/ {
     proxy_pass http://127.0.0.1:81/;
}
location /b/ {
    proxy_pass http://127.0.0.1:82/;
}
location /c/ {
    proxy_pass http://127.0.0.1:83/;
}

}

server {

listen 81;
server_name www.localhost;
#index index.html index.htm index.php;
proxy_set_header Host $host:$server_port;
    #proxy_set_header   Cookie $http_cookie;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
     proxy_pass http://a;
     #root       html/erp/;
}
location ~* \.(js|ico|css|find)?$ {
     proxy_pass http://a;
}

}
server {

listen 82;
server_name www.localhost;
#index index.html index.htm index.php;
proxy_set_header Host $host:$server_port;
    #proxy_set_header   Cookie $http_cookie;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

location / {
     proxy_pass http://b;

}

}

server {

listen 83;
server_name localhost;
index index.html index.htm index.php;
proxy_set_header Host $host:$server_port;
    #proxy_set_header X-Real-IP $remote_addr;
    #proxy_set_header   Cookie $http_cookie;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
     proxy_pass http://c;
}

}

4 现在情况描述

4.1 分别访问 192.168.100.100:81 192.168.100.100:82 192.168.100.100:83 访问正常(也就是说负载代理没问题)
4.2 用80端口再次转发也可以实现

192.168.100.100/a 代理到192.168.100.100:81,其他类似

5 问题:

5.1 访问 192.168.100.100/a 直接调转到了192.168.100.100:81/index.php
能不能屏蔽掉81字段?看起来正常应该这样192.168.100.100/a.index.php

5.2 访问192.168.100.100/a时调转了,有81端口的URI也就算了
我在第一次登陆应用的时候,点击了浏览器记录了密码,第二次次登陆输入直接192.168.100.100/a 就显示很多CSS JS等等无法加载,只有带192.168.100.100:81上测试才可以正常访问

测试得出,浏览器登陆记录密码后,进应用,要执行一步应用的退出后,下次登陆在正常!个人怀疑是cookie的问题

6 求大神帮忙看看

阅读 2.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题