【发布时间】:2021-04-29 20:09:00
【问题描述】:
我有 2 个项目:
-
myapi服务于所有 api 调用 -
django_web使用 myapi。
如果我将它们放在 2 个不同的服务器上 - 它们工作得很好(因为它们是完全独立的)但是,我希望它们都在同一台服务器上(命名: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 的 docker 设置:
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
【问题讨论】:
标签: docker nginx configuration share