如何在 nginx 服务器块配置文件上设置不同的位置属性?

如何在 nginx 服务器块配置文件上设置不同的位置属性?

我对配置服务器还很陌生。我按照教程操作,该教程指示拒绝所有未针对 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;
        }

相关内容