Я установил веб-приложение в Docker, которое в настоящее время работает внутри хоста по адресу 172.19.0.3:8888. Я хочу, чтобы это веб-приложение было доступно через Интернет через порт 443 (https), а запросы на порт 80 (HTTP) перенаправлены на 443.
Я планирую использовать обратный прокси-сервер Nginx в док-контейнере для достижения этой цели, но я не знаю, как правильно настроить его так, чтобы он указывал на док-контейнер 172.19.0.3:8888. Доступ http://172.19.0.3:8888 с хоста работает.
Вот руководство, которому я пытался следовать, но оно просто не показало, как конкретно указать на контейнер докера.
https://medium.com/@pentacent/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71
Примечание
Если я установлю порт 443 proxy_pass в http://example.org,, это сработает. Таким образом, конфигурации Cert работают правильно.
Веб-приложение
Запуск 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/;
}
}
Веб-приложение
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