我有两个项目:
myapidjango_web。但是,如果我将它们放在两个不同的服务器上--它们工作得很好(因为它们完全独立),我希望它们都位于同一台服务器上(名:www.example.com),但我无法理解它们如何能够共享相同的nginx。我正在使用docker,它抱怨0.0.0.0:443已经在使用了。
myapi nginx配置:
upstream flask_server {
server flaskapp2:8000;
}
server {
listen 80;
server_name example.com;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl;
server_name example.com;
location / {
proxy_pass http://flaskapp2:8000;
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;
proxy_no_cache 1;
proxy_cache_bypass 1;
}
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}对于django_web来说
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
client_max_body_size 20M;
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location /static/ {
alias /www/static/;
}
location /websocket/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
#proxy_pass http://$server_name:8080/websocket/my_random_number/;
proxy_pass http://$server_name:8080;
}
location / {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://$server_name:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";}}
myapi的码头设置:
nginx:
image: "nginx:1.13.5"
ports:
- "80:80"
- "443:443"
volumes:
- ./config/nginx/conf.d:/etc/nginx/conf.d
- ./static:/static
- /etc/letsencrypt:/etc/letsencrypt/
restart: always
networks:
- my_network
depends_on:
- flaskapp2
container_name: hnginx对于django_web:
nginx:
restart: always
image: "nginx"
container_name: hnginx
ports:
- "80:80"
- "443:443"
volumes:
- ./config/example:/etc/nginx/conf.d
- ./static2:/static
- ./media2:/media
- .:/www
- /etc/letsencrypt:/etc/letsencrypt/
- ./config/html_pages:/usr/share/nginx/html
networks:
- hnetwork发布于 2021-04-29 20:15:02
如果您想使用容器处理同一个主机上的共享端口,我建议您使用一个名为特雷菲克的中间件服务。
把Nginx的两项服务放在Traefik后面。Traefik会按照域名或路径前缀规则,在443上将您的web请求路由到良好的服务。
下面是一个简短的码头组合实施建议:
myapi:
[Your configuration]
expose:
- 80
- 443
labels:
- [Traefik configuration labels here]
django:
[Your configuration]
expose:
- 80
- 443
labels:
- [Traefik configuration labels here]
traefik:
[Traefik configuration]
ports:
# single access point on 443 that route incoming request
- 443:443https://stackoverflow.com/questions/67324412
复制相似问题