首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >码头集装箱港口与非集装箱内的nginx发生冲突

码头集装箱港口与非集装箱内的nginx发生冲突
EN

Stack Overflow用户
提问于 2020-02-21 08:31:12
回答 1查看 331关注 0票数 0

我有一个docker-compose.yml,如下所示。作为背景,我有一个Ghost CMS博客托管在一个数字海洋液滴。我想安装Commento使用Docker (一种开源的注释解决方案),但是当我通过Cloudflare路由我的流量时,我需要服务器端和前端端的SSL

但是,我通过数字海洋的一键Ghost安装安装了Ghost,它将nginx配置为我的站点的反向代理。Nginx不在容器中(安装在服务器上)。Nginx监听端口80和443。当我尝试进行对接-组合时,它会指出以下错误:

代码语言:javascript
运行
复制
Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use

Traefik不能在nginx (不在容器内,而是安装在服务器上)相同的端口上侦听。如何解决此问题,以及如何通过SSL反向代理我的共有服务器?我的船坞组合如下:

代码语言:javascript
运行
复制
version: '3.7'

services:

  proxy:
    restart: always
    image: traefik
    command:
    - "--api"
    - "--entrypoints=Name:http Address::80 Redirect.EntryPoint:https"
    - "--entrypoints=Name:https Address::443 TLS"
    - "--defaultentrypoints=http,https"
    - "--acme"
    - "--acme.storage=/etc/traefik/acme/acme.json"
    - "--acme.entryPoint=https"
    - "--acme.httpChallenge.entryPoint=http"
    - "--acme.onHostRule=true"
    - "--acme.onDemand=false"
    - "--acme.email=changeme@example.com" # TODO: Replace with your email address
    - "--docker"
    - "--docker.watch"
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock:ro
    - ./traefik/acme:/etc/traefik/acme
    networks:
    - web
    ports:
    - "80:80"
    - "443:443"
    labels:
    - "traefik.enable=false"

  server:
    image: registry.gitlab.com/commento/commento:latest
    ports:
      - 8080:8080
    environment:
      COMMENTO_ORIGIN: https://commento.example.com # TODO: Replace commento.example.com with your domami$      COMMENTO_PORT: 8080
      COMMENTO_POSTGRES: postgres://postgres:passwordexample@db:5432/commento?s$      
    depends_on:
      - db
    networks:
      - db_network
      - web
  db:
    image: postgres
    environment:
      POSTGRES_DB: commento
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: examplepassword #TODO: Replace STRONG_PASSWORD with th$    networks:
      - db_network
    volumes:
      - postgres_data_volume:/var/lib/postgresql/data

volumes:
  postgres_data_volume:

networks:
  web:
      external
  db_network:

下面是我在可用站点下的nginx服务器配置:

代码语言:javascript
运行
复制
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name example.com;
    root /var/www/ghost/system/nginx-root; # Used for acme.sh SSL verification (https://acme.sh)

    ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
    ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
    include /etc/nginx/snippets/ssl-params.conf;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:2368;

    }

    location ~ /.well-known {
        allow all;
    }

    client_max_body_size 50m;
}

抱歉,对这件事有点陌生。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-02-21 10:22:34

docker-compose.yml

代码语言:javascript
运行
复制
...
ports:
    - "80:80"
    - "443:443"
...

nginx/conf

代码语言:javascript
运行
复制
...
listen 443 ssl http2;
listen [::]:443 ssl http2;
...

Nginx使用主机端口443,所以您不能在您的坞-撰写重用它,您必须另一个是免费的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60334769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档