由于 Nginx 服务器配置,Let's Encrypt certbot 无法完成验证

由于 Nginx 服务器配置,Let's Encrypt certbot 无法完成验证

location对于应用程序,我需要在我的块中添加以下行:

rewrite ".*" /server.php break;

这导致 certbot 无法验证域。为了安装 SSL 证书,我注释了该行,certbot 运行正常。现在,问题是续订是自动的,如果我取消注释该行,续订将失败。

有没有办法location专门为 Let's Encript 的验证提供一个平台?如果有,那是什么?

以下是对问题行进行注释的完整块:

location / { 
    try_files $uri $uri/ =404; 
    fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    include fastcgi_params;
    fastcgi_param USE_INSTANCE 'd1';
    fastcgi_param SCRIPT_FILENAME $request_filename;
    #rewrite ".*" /server.php break; 
}

如果您想知道为什么我没有将匹配模式限制为~ \.php$,那是因为该配置属于我的api.host.com端点,它只会接收需要路由到 PHP 脚本的请求。

答案1

location为 certbot 创建了一个单独的块。

location /.well-known/acme-challenge/ {
    root /var/www;
    try_files $uri =404;
}

(请注意,我对每个虚拟主机使用相同的文档根目录,该文档根目录位于正常文档根目录之外,因此 certbot 永远不会将任何内容写入网站的实际目录。)

相关内容