我正在为两个不同的域名设置 letsencrypt:example.be 和 example.com
我已将 Nginx 配置为将所有 example.com/* 请求重定向到 example.be/de/*
// Block 1
server {
listen 80;
server_name .example.com;
return 302 http://example.be/de$request_uri;
}
// Block 2
server {
listen 80;
server_name www.example.be;
return 302 http://example.be$request_uri;
}
Block 3
server {
listen 80;
server_name example.be;
// server config
}
最终一切都应该落在第 3 块上。除了 letsencrypt 发出的 .well-known 请求.example.com
302 是临时存在的;一切正常后,它们将转到 301。
因此我想到在第一个服务器块中“捕获”该 uri。
// rewrite of Block 1
server {
listen 80;
server_name .example.com;
location ^~ /.well-known/ {
root /path/to/public/folder/;
try_files $uri =404;
}
return 302 http://example.be/de$request_uri;
}
请求http://example.com/.well-known/test.html
导致重定向到http://example.be/de/.well-known/test.html
如果我删除返回语句,test.html
则会显示该页面。
关于如何捕获针对 .well-known 目录的此请求,有什么指示吗?
答案1
^~
我不明白你为什么在你的 中使用location
。这没有必要。尝试将其删除。
我的工作 certbot 配置是:
server {
server_name www.yes-www.org yes-www.org www.yes-www.com yes-www.com;
listen [::]:80;
listen 80;
location /.well-known/acme-challenge/ {
root /var/www;
try_files $uri =404;
}
access_log off;
return 301 https://$host$request_uri;
}
如果这不起作用,请尝试从您的server
块中删除现有但您可能尚未在问题中发布的所有内容。