簡體   English   中英

Nginx反向代理(在Docker中)到Web應用程序(也在Docker中)

[英]Nginx reverse proxy (in Docker) to a web app (also in Docker)

我在docker中設置了一個Web應用程序,該應用程序當前在主機內部運行,位於172.19.0.3:8888。 我希望通過端口443(https)在因特網上訪問此Web應用程序,並將對端口80(HTTP)的請求重定向到443。

我計划在docker容器中使用Nginx反向代理來實現這一點,但我不知道如何正確配置它以指向docker容器172.19.0.3:8888。 從主機訪問http://172.19.0.3:8888

這是我試圖遵循的指南,但它沒有說明如何專門指向一個docker容器。

https://medium.com/@pentacent/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71

注意

如果我將端口443 proxy_pass設置為http://example.org ,它可以工作。 所以證書配置工作正常。

Web應用程序

在主機內部運行172.19.0.3:8888

docker-compose為Nginx和Certbot

我的證書回來了。

version: '3'
services:
  nginx:
    image: nginx:1.15-alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Volumes/nginx:/etc/nginx/conf.d
      - ./Volumes/certbot/conf:/etc/letsencrypt
      - ./Volumes/certbot/www:/var/www/certbot
  certbot:
    image: certbot/certbot
    volumes:
      - ./Volumes/certbot/conf:/etc/letsencrypt
      - ./Volumes/certbot/www:/var/www/certbot

Nginx app.conf

server {
    listen 80;
    server_name forums.example.com;

    location /.well-known/acme-challenge/ {
    root /var/www/certbot;
}

    location / {
       return 301 https://$host$request_uri;
    }    
}

server {
    listen 443 ssl;
    server_name forums.example.com;

    ssl_certificate /etc/letsencrypt/live/forums.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/forums.example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass http://172.19.0.3:8888/;
    }
}

Web應用程序

  flarum:
    image: mondedie/docker-flarum:0.1.0-beta.8.1-stable
    container_name: flarum
    env_file:
      - ./flarum.env
    volumes:
      - ./Volumes/assets:/flarum/app/public/assets
      - ./Volumes/extensions:/flarum/app/extensions
      - ./Volumes/nginx:/etc/nginx/conf.d
    depends_on:
      - mariadb

  mariadb:
    image: mariadb:10.2
    container_name: mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=flarum
      - MYSQL_USER=flarum
      - MYSQL_PASSWORD=password
    volumes:
      - ./Volumes/mysql/db:/var/lib/mysql

Docker Compose為docker-compose.yaml文件創建一個docker-compose.yaml網絡。

因此,您可以將Web應用程序作為服務(例如:webapp)添加到當前撰寫文件中。 並在nginx.conf直接指向您的服務。 您可以使用服務名稱作為DNS,而不是使用IP,它將由Docker解析為同一網絡。

 location / {
        proxy_pass http://webapp:8888/;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM