nginx обратный прокси: ошибка хоста не допускается

Я пытаюсь использовать nginx в качестве обратного прокси. Один сервер – игровой сервер. Когда я пытаюсь проксировать сервер, я получаю ошибку 400 Host Not Allowed.

течь

----------(services1) |----(services2) client ----(https)---> nginx ---(http)---|-------(services3) |----(services4) ---------(services5) 

(т. е. клиент разговаривает с nginx через ssl, а затем nginx действует как обратный прокси-сервер для любого бэкэнда, необходимого для http).

Я пытаюсь проверить это с помощью манекена для воспроизведения scala.

У меня есть nginx.conf который выглядит так:

 http { ... proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_http_version 1.1; upstream play-backend { server 127.0.0.1:9000; } include sites-enabled/*.conf; } 

Теперь у меня есть default.conf (внутри сайтов), которые перенаправляют HTTP-трафик через ssl:

 server { listen 80 default_server; list [::]:80 default_server; return 301 https://$host$request_uri; ... } 

Затем, внутри моего default-ssl.conf (внутри сайтов), у меня есть обратная логика прокси-сервера:

 server { listen 443 ssl http2; listen [::]:443 ssl http2; ... certificate and other stuff ... location /foo { proxy_pass http://play-backend; } } 

Я могу успешно переадресовать трафик через ssl, но я не уверен, почему я не могу прокси-сервер каким-либо из моих внутренних служб. У меня такое чувство, что я все устроил неправильно, и он каким-то образом пытается использовать https для общения с игровым сервером.

Я могу подтвердить, что игровой сервер работает, непосредственно нажимая на localhost:9000/

EDIT: В частности, проблема в том, что nginx делает запрос к серверной службе от myexampledomain.com, а не от localhost. Я не уверен, как отправить запрос с localhost на серверную службу, а затем вернуть ее клиенту из домена поверх ssl.

One Solution collect form web for “nginx обратный прокси: ошибка хоста не допускается”

Вероятно, вам нужно настроить разрешенный фильтр хостов на вашем приложении application.conf. Вы должны использовать использовать «.». чтобы разрешить любой Хост, или вы могли бы использовать «myexampledomain.com».

  play.filters.hosts { # Allow requests to myexampledomain.com. allowed = ["myexampledomain.com"] } 

https://www.playframework.com/documentation/2.6.x/AllowedHostsFilter

  • Что означает Chromium NET :: ERR_CERT_COMMON_NAME_INVALID?
  • vim.googlecode.com Изменение сертификата SSL
  • Dovecot отклоняет клиентский сертификат
  • Почтовый сервер для Linux, который может перенаправлять Gmail
  • почему httpd сообщает менее активные модули, чем apachectl?
  • Сертификат SSL подстановки не работает с открытым доменом
  • Почему Firefox 33 не использует GCM на нашем веб-сервере?
  • Курьер IMAP, TLS и доверенные IP-адреса
  • Как использовать неявный FTP через TLS
  • stunnel - как настроить stunnel для обработки ssl и подключить к нему http?
  • Как отключить SSLv2 и SSLv3 в ssl.conf от Apache на CENTOS 6.5?
  • Thunderbird не может подключиться к Dovecot и Postfix
  • Interesting Posts

    Что означает TGZ?

    Использование sed для преобразования строк в строки

    Карта IDE-диска в / dev / hda

    Сценарий Bash для настройки яркости при отключенной батарее

    Как я могу открыть новый терминал в том же каталоге последнего использованного из оконного менеджера клавиш?

    Плохо ли иметь низкую энтропию в / dev / random?

    Хорошая видеокарта для ТВ-выхода

    Что случилось с моей оперативной памятью?

    определить собственное время в Linux

    Обновление от простой операционной системы Freya beta до стабильной

    Файл asound.conf поврежден, не позволяет воспроизвести правильную звуковую карту, в результате она продолжает терпеть неудачу

    Каталог Automount Samba как / home / $ user

    Успешная команда командной строки Linux

    Инициирование приложения после загрузки ОС, а затем перезапуск этого приложения каждый час после этого

    Centos 7 – Не удается загрузить RPM (попытка подключения к IPV6)

    Linux и Unix - лучшая ОС в мире.