我已经在这里找到了一些关于这个主题的问答,但没有一个能帮助我解决问题。我今天刚刚安装了一个 debian 8 服务器,对我的域的每个请求都重定向到 https。现在我正在尝试为子域创建一个新的 SSL 证书,但由于 certbot 使用 http 访问 .well-known 目录,因此失败了。由于此请求被重定向到 https,因此它不起作用。我的想法是将这个隐藏目录从重定向中排除。
为了测试,我将一段简单的文本放入 .well-known/acme-challenge/ 目录中。每次我对此文件发出请求时,我仍然会被重定向。这是我当前的 nginx 配置:
server {
listen 80 default_server;
#listen [::]:80 default_server;
server_name test.de www.test.de;
root /var/www/html;
location /.well-known/acme-challenge {
root /var/www/html;
allow all;
}
location / {
return 301 https://test.de$request_uri;
}
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
include snippets/ssl-test.de.conf;
include snippets/ssl-params.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# location ~ /.well-known {
# allow all;
# }
}
有人有什么想法吗?
答案1
当我做类似的事情时,我需要添加以下内容:
location /.well-known {
root /var/www/html;
allow all;
try_files $uri =404;
}
location / {
return 301 https://example.com$uri;
}
如果没有try_files
,nginx 就不知道该做什么( 没有 的默认值try_files
)。
此外,在测试时,您需要使用curl
或wget
,这并不关心网站的 HSTS 设置。