Dockerized NGINX:在上游找不到主机 "odoo:8069"
Dockerized NGINX: host not found in upstream "odoo:8069"
我正在学习 https://www.freecodecamp.org/news/docker-nginx-letsencrypt-easy-secure-reverse-proxy-40165ba3aee2/
的 NGINX 反向代理
我使用 dockerized NGINX。我的最终目标是使用 HTTPS 托管 Odoo。现在,我正在学习如何反向代理(Odoo 使用端口 8069,例如 127.0.0.1:8069 访问 Odoo 而不是 127.0.0.1)
我了解 Proxy 和 Reverse Proxy 背后的概念,但我仍然没有弄清楚上游等技术部分。我其实很好奇为什么文章需要upstream(我在Whosebug上看到的反向代理相关的文章没有使用upstream)
预期结果:
通过访问example.com,反向代理会将来自example.com的请求(由用户)发送到127.0.0.1:8069
实际结果:
NGINX 容器自杀。
sudo docker-compose up reverse
输出
Starting reverse ... done
Attaching to reverse
reverse | 2020/04/22 14:04:05 [emerg] 1#1: host not found in upstream "odoo:8069" in /etc/nginx/conf.d/sites-enabled/odoo.conf:2
reverse | nginx: [emerg] host not found in upstream "odoo:8069" in /etc/nginx/conf.d/sites-enabled/odoo.conf:2
reverse exited with code 1
cat /etc/nginx/conf.d/sites-available/odoo.conf
输出
upstream odoo {
server odoo:8069;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://odoo;
}
}
---- 根据@user2932688
的要求更新
cat docker-compose.yml
输出
version: '3'
services:
reverse:
container_name: reverse
hostname: reverse
image: nginx:1.16.1
ports:
- 80:80
- 443:443
volumes:
- ./volumes/nginx/config/nginx.conf:/etc/nginx/nginx.conf
- ./volumes/nginx/config/conf.d:/etc/nginx/conf.d
- ./volumes/nginx/certs:/etc/ssl/private
web:
image: odoo:13.0
container_name: odoo
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./volumes/odoo/config:/etc/odoo
- ./volumes/odoo/addons:/mnt/extra-addons
environment:
- HOST=db
- USER=odoo
- PASSWORD=odoo
db:
image: postgres:11.7
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data/pgdata
volumes:
odoo-web-data:
odoo-db-data:
sudo docker-compose up
输出(运行 服务:反向、网络、数据库)
实际结果:反向容器自杀。
sudo docker-compose up
Creating network "docker-odoo-https_default" with the default driver
Creating volume "docker-odoo-https_odoo-web-data" with default driver
Creating volume "docker-odoo-https_odoo-db-data" with default driver
Creating reverse ... done
Creating docker-odoo-https_db_1 ... done
Creating odoo ... done
Attaching to reverse, docker-odoo-https_db_1, odoo
...
反转 | 2020/04/22 15:23:27 [emerg] 1#1:在 /etc/nginx/conf.d/sites-enabled/odoo.conf:2 的上游 "odoo:8 069" 中找不到主机
反转 | nginx: [emerg] host not found in upstream "odoo:8069" in /etc/nginx /conf.d/sites-enabled/odoo.conf:2
为此,您需要 docker-compose.yaml 中的 odoo
容器,它会监听端口 8069
。现在看来无法解决。
如果您的 docker-compose 中有它 - 请告诉我们,以便我们可以帮助您。
此外,通过执行 sudo docker-compose up reverse
,您只开始 reverse
整个 docker-compose。尽管您应该先开始 odoo
。或者从 sudo docker-compose up
开始一切
我正在学习 https://www.freecodecamp.org/news/docker-nginx-letsencrypt-easy-secure-reverse-proxy-40165ba3aee2/
的 NGINX 反向代理我使用 dockerized NGINX。我的最终目标是使用 HTTPS 托管 Odoo。现在,我正在学习如何反向代理(Odoo 使用端口 8069,例如 127.0.0.1:8069 访问 Odoo 而不是 127.0.0.1)
我了解 Proxy 和 Reverse Proxy 背后的概念,但我仍然没有弄清楚上游等技术部分。我其实很好奇为什么文章需要upstream(我在Whosebug上看到的反向代理相关的文章没有使用upstream)
预期结果:
通过访问example.com,反向代理会将来自example.com的请求(由用户)发送到127.0.0.1:8069
实际结果:
NGINX 容器自杀。
sudo docker-compose up reverse
输出
Starting reverse ... done
Attaching to reverse
reverse | 2020/04/22 14:04:05 [emerg] 1#1: host not found in upstream "odoo:8069" in /etc/nginx/conf.d/sites-enabled/odoo.conf:2
reverse | nginx: [emerg] host not found in upstream "odoo:8069" in /etc/nginx/conf.d/sites-enabled/odoo.conf:2
reverse exited with code 1
cat /etc/nginx/conf.d/sites-available/odoo.conf
输出
upstream odoo {
server odoo:8069;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://odoo;
}
}
---- 根据@user2932688
的要求更新cat docker-compose.yml
输出
version: '3'
services:
reverse:
container_name: reverse
hostname: reverse
image: nginx:1.16.1
ports:
- 80:80
- 443:443
volumes:
- ./volumes/nginx/config/nginx.conf:/etc/nginx/nginx.conf
- ./volumes/nginx/config/conf.d:/etc/nginx/conf.d
- ./volumes/nginx/certs:/etc/ssl/private
web:
image: odoo:13.0
container_name: odoo
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./volumes/odoo/config:/etc/odoo
- ./volumes/odoo/addons:/mnt/extra-addons
environment:
- HOST=db
- USER=odoo
- PASSWORD=odoo
db:
image: postgres:11.7
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data/pgdata
volumes:
odoo-web-data:
odoo-db-data:
sudo docker-compose up
输出(运行 服务:反向、网络、数据库)
实际结果:反向容器自杀。
sudo docker-compose up
Creating network "docker-odoo-https_default" with the default driver
Creating volume "docker-odoo-https_odoo-web-data" with default driver
Creating volume "docker-odoo-https_odoo-db-data" with default driver
Creating reverse ... done
Creating docker-odoo-https_db_1 ... done
Creating odoo ... done
Attaching to reverse, docker-odoo-https_db_1, odoo
... 反转 | 2020/04/22 15:23:27 [emerg] 1#1:在 /etc/nginx/conf.d/sites-enabled/odoo.conf:2 的上游 "odoo:8 069" 中找不到主机 反转 | nginx: [emerg] host not found in upstream "odoo:8069" in /etc/nginx /conf.d/sites-enabled/odoo.conf:2
为此,您需要 docker-compose.yaml 中的 odoo
容器,它会监听端口 8069
。现在看来无法解决。
如果您的 docker-compose 中有它 - 请告诉我们,以便我们可以帮助您。
此外,通过执行 sudo docker-compose up reverse
,您只开始 reverse
整个 docker-compose。尽管您应该先开始 odoo
。或者从 sudo docker-compose up