Мой файл nginx.conf выглядит следующим образом:
www-данные пользователя;
рабочие_процессы авто;
pid /run/nginx.pid;
включить /etc/nginx/modules-enabled/*.conf;
#вышеупомянутое включение включает следующие файлы по умолчанию:
# 50-mod-http-image-filter.conf
#50-mod-http-xslt-filter.conf
#50-mod-mail.conf
#50-mod-stream.conf
События {
worker_connections 500;
}
http {
включить /etc/nginx/proxy.conf;
limit_req_zone $binary_remote_addr zone=one:10м rate=100р/м;
server_tokens отключены;
отправить файл включен;
keepalive_timeout 30;
client_body_timeout 10; client_header_timeout 10; send_timeout 10;
вверх по течению мое приложение {
сервер 127.0.0.1:5000;
}
сервер {
слушать 443 ssl http2;
слушать [::]:443 ssl http2;
имя_сервера myapi.com;
ssl_certificate /etc/letsencrypt/live/myapi.com/fullchain.pem; # под управлением Certbot
ssl_certificate_key /etc/letsencrypt/live/myapi.com/privkey.pem; # под управлением Certbot
включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
#Перенаправляет весь трафик
место расположения / {
прокси_пасс http://myapi;
limit_req zone=один пакет=10;
}
}
}
я установил certbot и certbot-nginx (убунту).
SSL работает нормально. Брандмауэр разрешает только порт 443.
Я пытаюсь обновить сертификат certbot с помощью команды: sudo certbot обновить --dry-run
Это пытается подтвердить, что я владею доменом, отправляя запрос на http://myapi.com/.well-known/acme-challenge/2d8dvxv8x9dvxd9v (примечание: я запутал значение ключа 2d8dvxv8x9dvxd9v, так как это что-то личное)
Но на этот раз вышло. Поэтому я включил порт 80 и добавил следующий дополнительный элемент сервера:
сервер {
слушать 80;
имя_сервера myapi.com;
вернуть 301 https://$host$request_uri;
}
Теперь команда обновления certbot (sudo certbot обновить --dry-run
) может обновить сертификат. Странно, даже если я удалю этот серверный блок, обновление certbot работает нормально.
Где путь .well-known/acme-challenge? Он генерируется/удаляется на лету?
Когда я удаляю блокировку сервера для порта 80, то как nginx может обновить сертификат (потому что ему нужен порт 80 для вызова certbot)?