NGINX домен punycode работает только с поддоменом - PullRequest
1 голос
/ 30 января 2020

У меня есть nginx 1.14.0 на Ubuntu 18.04.3. У меня возникли некоторые проблемы с доменом 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;
  }

Странно, что это работает, но имя_сервера не ...

...