【发布时间】:2020-08-02 05:17:08
【问题描述】:
我正在尝试公开两个不同的地址,例如 API。一个在 Django 中,另一个在 Flask 中,它们是 Docker-compose 容器。
我需要配置 Nginx 以在两个不同的子域中公开两个容器。
这是我的 Nginx.conf:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024; ## Default: 1024, increase if you have lots of clients
}
http {
include /etc/nginx/mime.types;
# fallback in case we can't determine a type
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local]
"$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
upstream app {
server django:5000;
}
upstream app_server {
server flask:5090;
}
server {
listen 5090;
location / {
proxy_pass http://app_server;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Scheme $scheme;
}
}
server {
listen 5000;
location / {
proxy_pass http://app;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Scheme $scheme;
}
}
}
还有我的 production.yml
Nginx:
build: ./compose/production/nginx
image: *image
ports:
- 80:80
depends_on:
- flask
- django
我的容器都装好了。
【问题讨论】:
-
你告诉
nginx在端口80上运行然后你有server块在端口5000上监听而没有server_name。因此,如果这是您的实际配置,那么是的,您会遇到一些麻烦。 -
您好,感谢您的回复。那么,我必须在哪里更改端口?因为如果我更改 production.yml 中的端口并将 80:80 替换为 5090:5090 我会出错。
-
错误:对于 nginx 无法启动服务 nginx:驱动程序在端点 core_nginx_1 上编程外部连接失败(7b49e70c117f45cf00fde7488626897a22657cdf73ac9d07d1d546b55986ae7d):绑定 0.0.0.0:5090 失败:端口已分配
标签: django nginx flask docker-compose