Nginx 中的 Unicode 域名 server_name

Unicode domain name in Nginx server_name

我正在尝试使用名为 "privatinstruktør.dk" 的域名设置服务器,但总是被重定向到默认的 "welcome to nginx" 页面。

我试过这样输入 server_name:

server {
  listen 80;
  server_name privatinstruktør.dk;

  location / {
    root /var/www/privat;
  }
}

但这没有用。所以我尝试使用像这样的正则表达式:

server_name "~^privatinstrukt(.+)r\.dk$";

server_name "~^privatinstrukt(.*)r\.dk$";

甚至

server_name "~^privat(.*)$";

但都失败了,我被重定向到默认页面。有人知道如何解决这个问题吗?

在nginx中使用punycode格式配置Unicode域名:

server_name xn--privatinstruktr-jub.dk;

仅使用 Punycode 名称:

server {
  listen 80;
  server_name xn--privatinstruktr-jub.dk;

  location / {
    root /var/www/privat;
  }
}

这就是 Nginx Docs 所说的:

Internationalized domain names (IDNs) should be specified using an ASCII (Punycode) representation in the server_name directive