Я пытаюсь добавить HTTPS в свой домен с помощью LetsEcnrypt. На данный момент мой сервер настроен так: у меня есть Spring Boot, работающий на Tomcat в контейнере докеров на Port 8088
и у меня есть сервер Nginx перед контейнером Tomcat, которому разрешен доступ Port 80
и Port 443
. Вот мои файлы конфигурации
nginx.conf
http{
server {
listen 80;
listen [::]:80;
location / {
proxy_pass http://blab:8088;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
}
server {
listen 443 ssl;
server_name blab.com;
ssl_certificate /etc/letsencrypt/live/blab.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blab.com/privkey.pem;
location / {
proxy_pass http://blab:8088;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
}
events { }
Dockerfile для создания контейнера nginx
Dockerfile
# latest nginx
FROM nginx
# copy custom configuration file
COPY nginx.conf /etc/nginx/nginx.conf
# expose server port
EXPOSE 80 443
# start server
CMD ["nginx", "-g", "daemon off;"]
Я создаю образ докера для nginx следующим образом docker image build -t custom-nginx:latest .
Тогда у меня есть docker-compose.yml
как это
version: '3.7'
services:
nginx_server:
image: custom-nginx
ports:
- '80:80'
- '443:443'
volumes:
- ./data/nginx:/etc/nginx/conf.d
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
depends_on:
- "blab"
blab:
image: joker/blab
ports:
- '8088:8088'
Итак, nginx слушает Port 80
и Port 443
и Spring Boot работает на Port 8088
Я могу получить доступ к сайту по http. Сопоставление DNS выполнено правильно, но когда я пытаюсь выдать сертификат с помощью этой команды
docker run -it --rm --name certbot \
-v "/data/certbot/conf:/etc/letsencrypt" \
-v "/data/certbot/www:/var/www/certbot" \
certbot/certbot certonly
Я получаю эту ошибку
Challenge failed for domain blab.com
http-01 challenge for blab.com
Cleaning up challenges
Some challenges have failed.
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: blab.com
Type: unauthorized
Detail: Invalid response from
http://blab.com/.well-known/acme-challenge/sdaglkoweg235362gnvoerg
[my_ip]: "<html>\r\n<head><title>404 Not
Found</title></head>\r\n<body>\r\n<center><h1>404 Not
Found</h1></center>\r\n<hr><center>nginx/1.17.8</ce"
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address.
blab.com
- это гипотетический сайт, а не исходный сайт.
Это моя проблема. Любая помощь по этому поводу будет очень признательна. Спасибо