Nginx 无法从 docker-compose 找到上游
Nginx can't find upstream from docker-compose
我正在尝试 运行 一个带有 ktor java 服务器的 nginx 代理服务器。但是,nginx 使用这些配置会抛出“111:连接被拒绝”。我已经在网上尝试了“将上游服务器名称从本地主机设置为 docker 撰写名称”,但它没有任何帮助。
提前谢谢你,抱歉我的英语不好。
docker-compose.yml
version: "3.8"
services:
nginx:
image: nginx:1.19.3
ports:
- 80:80
- 443:443
volumes:
- ./Nginx/logs:/var/log/nginx
- ./Nginx/confs:/etc/nginx/conf.d
- ./Nginx/confs:/etc/nginx/keys
mariadb:
image: mariadb:10.5.6
ports:
- 3306:3306
volumes:
- ./Mariadb/data:/var/lib/mysql
- ./Mariadb/confs:/etc/mysql/conf.d
- ./Mariadb/inits:/docker-entrypoint-initdb.d
env_file:
- .env
environment:
TZ: Asia/Seoul
MYSQL_USER: dockhyub
yangjin208:
build: ./Yangjin208
ports:
- "3000:8080"
env_file:
- .env
- ./Yangjin208/.env
links:
- mariadb:sql
yangjin208.conf 下./Nginx/confs
upstream yangjin208_app {
server yangjin208:3000;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://yangjin208_app;
proxy_redirect off;
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-Host $server_name;
}
}
localhost:3000 可以通过浏览器访问,没有问题。
我认为你没有在 nginx 中使用 yangjin208.conf。将 yangjin208.conf 重命名为 default.conf.
所以,我发现了问题 - docker 内部网络似乎使用了原始端口,而不是从 docker-compose.yml 的“端口”配置更改的端口。我使用的是端口 3000(从 docker-compose 声明的端口)而不是 8080(原始端口),这就是它不起作用的原因。谢谢大家。
我正在尝试 运行 一个带有 ktor java 服务器的 nginx 代理服务器。但是,nginx 使用这些配置会抛出“111:连接被拒绝”。我已经在网上尝试了“将上游服务器名称从本地主机设置为 docker 撰写名称”,但它没有任何帮助。
提前谢谢你,抱歉我的英语不好。
docker-compose.yml
version: "3.8"
services:
nginx:
image: nginx:1.19.3
ports:
- 80:80
- 443:443
volumes:
- ./Nginx/logs:/var/log/nginx
- ./Nginx/confs:/etc/nginx/conf.d
- ./Nginx/confs:/etc/nginx/keys
mariadb:
image: mariadb:10.5.6
ports:
- 3306:3306
volumes:
- ./Mariadb/data:/var/lib/mysql
- ./Mariadb/confs:/etc/mysql/conf.d
- ./Mariadb/inits:/docker-entrypoint-initdb.d
env_file:
- .env
environment:
TZ: Asia/Seoul
MYSQL_USER: dockhyub
yangjin208:
build: ./Yangjin208
ports:
- "3000:8080"
env_file:
- .env
- ./Yangjin208/.env
links:
- mariadb:sql
yangjin208.conf 下./Nginx/confs
upstream yangjin208_app {
server yangjin208:3000;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://yangjin208_app;
proxy_redirect off;
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-Host $server_name;
}
}
localhost:3000 可以通过浏览器访问,没有问题。
我认为你没有在 nginx 中使用 yangjin208.conf。将 yangjin208.conf 重命名为 default.conf.
所以,我发现了问题 - docker 内部网络似乎使用了原始端口,而不是从 docker-compose.yml 的“端口”配置更改的端口。我使用的是端口 3000(从 docker-compose 声明的端口)而不是 8080(原始端口),这就是它不起作用的原因。谢谢大家。