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 永远不会将任何内容写入网站的实际目录。)