У меня есть рабочая конфигурация Nginx, которая:
Выполняет жесткое перенаправление (301) с http на https
Кроме того, игнорируются подпути в http (http://www.example.com/ANY/THING перенаправляет на простой https://example.com)
Обслуживает приложение с https
Как я могу изменить файл конфигурации, чтобы я мог:
Создайте сертификат HTTPS с помощью certbot / Let's Encrypt
Через 90 дней беги certbot renew
без редактирования конфигурации
В этом примере вместо приложения используется статический корень. Заменить location /
заблокировать в разделе HTTPS соответствующим образом ...
1) Создайте файл conf (обратите внимание, что ssl_certificate
строки закомментированы)
server {
# naive redirect of HTTP to HTTPS
server_name example.com;
listen *:80;
listen [::]:80;
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/letsencrypt;
}
location / {
return 301 https://example.com;
}
}
server {
# main server block
server_name example.com;
# SSL configuration
listen 443 ssl;
listen [::]:443 ssl;
# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/html;
index index.html index.htm;
location / {
# replace this with directives for your application
try_files $uri $uri.html $uri/ =404;
}
}
2) Запускаем certbot
certbot certonly --authenticator webroot --webroot-path /var/www/letsencrypt -d example.com
3) Обновите файл conf. Раскомментируйте строки ssl_certificate:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
4) Перезагрузите nginx
service nginx restart
5) Тестовое обновление (с принудительным возобновлением, а не с сухим прогоном)
certbot renew --force-renewal
6) Через 90 дней продлите как обычно ...
certbot renew