代码之家  ›  专栏  ›  技术社区  ›  eSPiYa

Docker Compose on ASP.NET Core 2.x and Nginx with HTTPS/SSL

  •  6
  • eSPiYa  · 技术社区  · 7 年前

    我想使用Nginx作为我的ASP.NET Core 2.x项目的web服务器 this tutorial 作为基地。我只是省略了服务器名(对于即将在web项目中实现的多租户)所有http/80请求都将重定向到https/443。

    我创建了一个带有Angular项目的ASP.NET Core 2.x,并启用了“Configure for HTTPS”,然后添加了Docker支持,它为项目创建了默认的Dockerfile,并为Docker compose创建了一个项目。

    在dockerfile中,我删除了自动生成的端口号,而是公开了端口80和443:

    #EXPOSE 61876
    #EXPOSE 44340
    EXPOSE 80
    EXPOSE 443
    

    然后创建一个文件并命名为nginx.conf:

    worker_processes 4;
    
    events { worker_connections 1024; }
    
    http {
        sendfile on;    
    
        server {
            listen 443;
    
            location / {
                proxy_pass         $scheme://erp.web;
                proxy_http_version 1.1;
                proxy_set_header   Upgrade $http_upgrade;
                proxy_set_header   Connection keep-alive;
                proxy_set_header   Host $host;
                proxy_cache_bypass $http_upgrade;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header   X-Forwarded-Proto $scheme;
            }
        }
    }
    

    然后将docker compose.yml(版本3.4)修改为:

    services:
      erp.web:
        image: ${DOCKER_REGISTRY}erpweb
        build:
          context: .
          dockerfile: Erp.Web/Dockerfile
    
      proxy:
        image: nginx:latest
        ports:
          - 80:80
        volumes:
          - ./nginx.conf:/etc/nginx/nginx.conf
    

    使用docker-comspoe.override.yml,如下所示:

    services:
      erp.web:
        environment:
          - ASPNETCORE_ENVIRONMENT=Development
          - ASPNETCORE_URLS=https://+:443;http://+:80
          - ASPNETCORE_HTTPS_PORT=443
        ports:
          - "80" #"61876:80"
          - "443" #"44340:443"
        volumes:
          - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
          - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
    

    当我试图浏览 https://localhost ,它说它无法到达服务器另外,当我试图检查Docker容器列表时,Nginx服务器仍然使用端口80,而我的web应用程序项目有以下端口:

    some-random-port(currently 32771)->80, some-other-random-port(32770 for now)->443
    
    0 回复  |  直到 7 年前
    推荐文章