我一直在使用Docker设置一组位于Nginx容器后面的Web应用程序。我正在使用docker-compose
来管理不同的服务,并且所有单独的Web服务容器都可以正常工作,但是当我尝试从Nginx容器访问它们时,只有其中一个可以工作,而且它始终是我尝试的第一个访问。因此,如果我启动容器组并访问app1,那么我会按预期获得页面,但如果我转到app2则会出现50x错误。如果我重新启动组并首先转到app2然后我按预期获得页面,但如果我转到app1,我现在得到50x错误。我不确定我在Nginx配置中做错了什么。非常感谢一些帮助。
这是我的Nginx配置:
upstream app1_backend {
server app1:8000;
}
upstream app2_backend {
server app2:8000;
}
server {
listen 80 default_server;
server_name localhost;
charset utf-8;
#location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
#}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /static {
alias /static;
}
location /app1/ {
proxy_pass http://app1_backend/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /app2/ {
proxy_pass http://app2_backend/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
我再次可以在http://app1:8000/
和http://app2:8000/
正确访问各个应用程序。
答案 0 :(得分:0)
我弄清楚我做错了什么。我有server_name localhost;
。将其更改为server_name _;
已修复此问题。