【发布时间】:2020-07-16 22:30:49
【问题描述】:
// 发布问题后编辑
我的问题是所有码头工人都在同一个网络中,因为我也想码头化代理,他需要访问所有码头工人来代理请求。
它与代理无关
所以我不知道为什么,但事实上它们在同一个 docker 网络中,即使使用暴露的端口,它也会通过我所有的应用程序进行负载平衡
我正在尝试为我的团队设置本地开发的反向代理。 我们有 3 个 Laravel 应用程序在 docker 中运行良好,映射到主机上的不同端口
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 个应用程序之间进行负载平衡。
最奇怪的是,除了这些应用程序之外,我的 fronts 应用程序 v1 和 v2 在不同的端口上运行良好,代理配置类似,没有任何负载平衡问题。 如果有人有建议帮助我解决这个问题
【问题讨论】:
-
你能说明你是如何提出请求的吗?你能显示 nginx 访问和错误日志吗?什么版本的 nginx?
-
我正在通过我的网络浏览器请求/我返回了一个带有服务名称 (Apiv1/Apiv2/Qbo) 的字符串。我正在使用 nginx 1.18.0。对于日志,我需要一些时间来重新启动服务,因为我目前正在工作:)
-
@AndyShinn 我发现了我的问题,码头工人在同一个网络中。因此,即使它们暴露于不同的端口,它们也会相互负载平衡。它与代理无关。很抱歉浪费您的时间:)
标签: linux docker nginx load-balancing reverse-proxy