如何解决如何为 2 个不同的项目2 个不同的 docker compose 文件配置 nginx
我有 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
解决方法
如果您想通过容器处理同一主机上的共享端口,我建议您使用名为 Traefik 的中间件服务。
将 Nginx 提供的两项服务放在 Traefik 后面。 Traefik 会按照域名或路径前缀规则,将通过 443 传入的 Web 请求路由到良好的服务。
这是一个简短的 docker-compose 实现建议:
x = int(input())
list = []
for i in range(x) :
m = int(input())
list.append(m)
for i in list :
if i > 2 :
list.remove(i)
print(list)
print(len(list))
z = len(list) / 3
print (int(z))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。