Nginx 反向代理做意想不到的负载均衡
Nginx reverse proxy does unexpected load balancing
// 发布问题后编辑
我的问题是所有 docker 都在同一个网络中,因为我也想 docker 使用代理并且他需要访问所有 docker 来代理请求。
它与 PROXY
无关
所以我不知道为什么,但事实是它们在同一个 docker 网络中,即使在使用暴露的端口时它也在我所有的 apps
中进行负载平衡
我正在尝试为我的团队设置用于本地开发的反向代理。
我们在 docker 中有 3 个 Laravel Apps 运行 映射到主机
上的不同端口
docker ps 结果 :
a1741218e399 nginx "/docker-entrypoint.…" 5 seconds ago Up 3 seconds 0.0.0.0:8087->80/tcp qbo
175b5133fd82 nginx "/docker-entrypoint.…" 8 seconds ago Up 7 seconds 0.0.0.0:8086->80/tcp apiv2
56c485f51700 nginx "/docker-entrypoint.…" 41 seconds ago Up 39 seconds 0.0.0.0:8085->80/tcp apiv1
所有主机都在 /etc/hosts
中引用
127.0.0.1 api.lan
127.0.0.1 api2.lan
127.0.0.1 qbo.lan
Nginx 安装在我的机器上,配置如下
# Api v1
upstream api.lan {
server localhost:8085;
}
server {
server_name api.lan;
listen 80;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://api.lan;
proxy_redirect off;
}
}
# Qbo
upstream qbo.lan {
server localhost:8087;
}
server {
server_name qbo.lan;
listen 80;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://qbo.lan;
proxy_redirect off;
}
}
# Api v2
upstream api2.lan {
server localhost:8086;
}
server {
server_name api2.lan;
listen 80;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://api2.lan;
proxy_redirect off;
}
}
这是我的问题,当访问 3 个域中的任何一个时,它是这 3 个 apps 之间的负载平衡。
最奇怪的是,除了那些 apps,我还在不同的端口上得到了我的前端 apps v1 和 v2 运行,代理配置相似,没有任何负载平衡问题。
如果有人有建议帮我解决这个问题
问题是我的码头工人在同一网络中。
即使我公开了不同的端口,它们之间也会进行负载平衡。
与代理无关。
// 发布问题后编辑
我的问题是所有 docker 都在同一个网络中,因为我也想 docker 使用代理并且他需要访问所有 docker 来代理请求。
它与 PROXY
无关
所以我不知道为什么,但事实是它们在同一个 docker 网络中,即使在使用暴露的端口时它也在我所有的 apps
我正在尝试为我的团队设置用于本地开发的反向代理。 我们在 docker 中有 3 个 Laravel Apps 运行 映射到主机
上的不同端口docker ps 结果 :
a1741218e399 nginx "/docker-entrypoint.…" 5 seconds ago Up 3 seconds 0.0.0.0:8087->80/tcp qbo
175b5133fd82 nginx "/docker-entrypoint.…" 8 seconds ago Up 7 seconds 0.0.0.0:8086->80/tcp apiv2
56c485f51700 nginx "/docker-entrypoint.…" 41 seconds ago Up 39 seconds 0.0.0.0:8085->80/tcp apiv1
所有主机都在 /etc/hosts
中引用127.0.0.1 api.lan
127.0.0.1 api2.lan
127.0.0.1 qbo.lan
Nginx 安装在我的机器上,配置如下
# Api v1
upstream api.lan {
server localhost:8085;
}
server {
server_name api.lan;
listen 80;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://api.lan;
proxy_redirect off;
}
}
# Qbo
upstream qbo.lan {
server localhost:8087;
}
server {
server_name qbo.lan;
listen 80;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://qbo.lan;
proxy_redirect off;
}
}
# Api v2
upstream api2.lan {
server localhost:8086;
}
server {
server_name api2.lan;
listen 80;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://api2.lan;
proxy_redirect off;
}
}
这是我的问题,当访问 3 个域中的任何一个时,它是这 3 个 apps 之间的负载平衡。
最奇怪的是,除了那些 apps,我还在不同的端口上得到了我的前端 apps v1 和 v2 运行,代理配置相似,没有任何负载平衡问题。 如果有人有建议帮我解决这个问题
问题是我的码头工人在同一网络中。 即使我公开了不同的端口,它们之间也会进行负载平衡。 与代理无关。