1

我在 Ubuntu 18.04.3 上有一个 nginx 1.14.0。我在使用 punycode 域时遇到了一些问题,它仅适用于子域,例如 www.xn--bratwrste-u9a.de,但不适用于仅域,例如 xn--bratwrste-u9a.de 其他域,例如 example.com预期的。

我的默认服务器配置:

server {
    listen 1.2.3.4:443 ssl http2 default_server;
    listen 5.6.7.8:443 ssl http2 default_server;
    ssl_certificate /ssl/sslcert.pem;
    ssl_certificate_key /ssl/privkey.pem;

    server_name _;

    root /var/www/foo;
    index index.html index.php;
  }

这里是虚拟服务器配置:

server {
    listen 5.6.7.8:443 ssl http2;
    server_name .xn--bratwrste-u9a.de;

    ssl_certificate /ssl/sslcert.pem;
    ssl_certificate_key /ssl/privkey.pem;

    root /var/www/bar;
    index index.html index.php;
}

日志看起来不错:

"GET /foo.bar HTTP/2.0" 200 247 "https://xn--bratwrste-u9a.de/" 

error.log 中也没有错误

nginx 的文档没有给我任何问题的答案,并且单独列出服务器名称也没有什么不同。

感谢您的任何建议。

编辑:

解决方法:将重写规则添加到默认服务器:

  if ($host = xn--bratwrste-u9a.de) {
  rewrite  (.*)  https://www.xn--bratwrste-u9a.de$1;
  }

奇怪的是,这有效,但 server_name 不...

4

0 回答 0