#nginx #ssl #docker-compose
#nginx #ssl #docker-compose
Вопрос:
Я хотел бы использовать nginx в качестве интерфейса SSL для веб-сайта apache HTTP. Я сократил свою конфигурацию до самой простой:
Nginx default.conf
server {
listen 80;
return 301 https://$host$request_uri;
}
#Work in progress
server {
listen 443 ssl defau<
ssl_certificate /etc/ssl/certs/pem-1620200742-1020479.pem;
ssl_certificate_key /etc/ssl/certs/mycomp.com.key;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://wip:80;
}
}
docker-compose.yml:
version: '2'
services:
reverse:
image: nginx
container_name: reverse
ports:
- 80:80
- 443:443 #This addition solves the problem!!!
networks:
- mynet
volumes:
- ./reverse/default.conf:/etc/nginx/conf.d/default.conf
- ./reverse/ssl:/etc/ssl/certs
wip:
image: httpd:2.4
container_name: wip
environment:
TZ: "France/Paris"
ports:
- 8096:80
networks:
- mynet
networks:
mynet:
driver: "bridge"
ipam:
driver: default
в журналах все выглядит нормально:
nginx:
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf differs from the packaged version
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
172.18.0.1 - - [10/Dec/2021:09:15:04 0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.43" "-"
Nginx запускается нормально, получает 80 подключений, но ничего о 443 соединениях
При просмотре https://127.0.0.1 Я получаю сообщение «сбой соединения». То же самое, используя следующую команду:
telnet 127.0.0.1 443
Это означает, что nginx не прослушивает 443
Я проверил проблемы с сетью с помощью tinyweb. Порт 443 не заблокирован брандмауэром или чем-либо еще.
Вы имеете какое-либо представление о том, что не так с моей конфигурацией nginx?
Комментарии:
1.Ваш nginx в порядке. В
reverse
контейнере вы предоставили только сообщение 80, а не порт 443, поэтому он недоступен извне контейнера.2. Да! это решение, спасибо