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的问题