Я использую Nginx в качестве обратного прокси-сервера для сервера Rstudio и сервера Shiny с целью обеспечения безопасности подключения к этим службам. Я использую Letencrypt для бесплатных подписанных сертификатов.
У меня есть эта запись для letsencrypt, чтобы подтвердить, что я тот, кем себя называю.
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name mydomain.com;
location ~ /.well-known {
allow all;
}
}
У меня также есть другой server
слушать на 443 и proxy_redirect
к моим серверам. Там все нормально работает. Я хочу иметь что-то вроде
server {
listen 80;
return 301 https://$host$request_uri;
}
но я думаю, что это сломает letsencrypt, так как мне сделать это, не нарушая проверку letsencrypt?
Моя рабочая конфигурация для этого:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /srv/www/empty;
include includes/letsencrypt;
location / {
return 301 https://www.example.com$request_uri;
}
}
где /etc/nginx/includes/letsencrypt
управляется Ansible и содержит:
location /.well-known/acme-challenge/ {
try_files $uri =404;
}
и /srv/www/empty
- это пустой каталог, который содержит файлы только тогда, когда Let's Encrypt используется для вызова (с --webroot
).
Затем Let's Encrypt запускается с:
letsencrypt certonly --webroot -w /srv/www/empty -d example.com -d www.example.com