我有以下问题。我创建了这个丹麦网站flaatinfo.dk,flåtinfo.dk也可以访问。
域名经理给了我一个flaatinfo.dk的证书,但说他们无法为flåtinfo.dk生成证书,因为它包含一个特殊字符。
有没有一种方法(在nginx设置中(可以将所有HTTPS请求从flåtinfo.dk重定向到flaatinfo.dk??
HTTP重定向似乎工作得很好,但如果我尝试像这样重定向HTTPS,我会在浏览器中收到证书错误:
server {
listen 443 ssl;
server_name flåtinfo.dk www.flåtinfo.dk;
return 301 https://flaatinfo.dk$request_uri;
}
www.flåtinfo.dk
是一个国际化域名(IDN(。
根据NGINX国际化名称文档:
域名(IDN(应使用ASCII(Punycode(指定
server_name
指令中的表示
因此您应该在NGINX配置中将其指定为xn--fltinfo-fxa.dk
。
至于为什么你的纯HTTP重定向仍然有效,可能是因为它与任何其他域都不匹配,所以NGINX最终不得不选择它作为默认域。
我在浏览器中得到证书错误
当然,由于您的IDN没有TLS证书,浏览器会发出警告。您需要获得IDN的TLS证书才能消除警告。Let's Encrypt支持为IDN颁发证书,并且是免费的。