我对配置服务器还很陌生。我按照教程操作,该教程指示拒绝所有未针对 root 的请求,这非常合理:
server {
listen 80;
listen [::]:80;
root /var/www/yourdomain.com/html;
index index.html index.htm index.nginx-debian.html;
server_name yourdomain.com www.nelsonserpa.com;
location / {
try_files $uri $uri/ =404;
}
}
但是,我需要安装 certbot 的 tls/ssl 才能启用 https。而且 certbot 失败,因为文件位置无法访问。我需要访问mydomain.com/.well-known/acme-challenge/<credential>
看来我需要将位置设置为:
location ~ /.well-known/ {
allow all;
}
我如何继续拒绝除该特定文件夹之外其他地方的连接?
答案1
这是臭名昭著的 certbot 404 问题的解决方案
server {
root /var/www/yoursite.com/html;
index index.html index.htm index.nginx-debian.html;
server_name yoursite.com www.yoursite.com;
location / {
try_files $uri $uri/ =404;
}
location /.well-known/acme-challenge {
default_type text/plain;
root /etc/letsencrypt/webroot;
}