Как настроить nginx для неквалифицированных имен хостов?

Как настроить nginx для неквалифицированных имен хостов?

Я настраиваю nginx как обратный прокси. До этого я использовал только Apache, и без виртуальных хостов.

Я хочу, чтобы мои пользователи могли получать доступ к различным веб-сервисам интрасети, просто вводя название сервиса в адресную строку. Например, вводить «timesheets» вместо «timesheets.intranet.local».

На клиентской машине, если я использую «wget» или браузер для доступа к полному доменному имени сайта (timesheets.intranet.local), то все в порядке.

Если на клиентской машине я использую «wget» или браузер для доступа к простому имени хоста сайта (расписания), то происходит сбой.

Если я использую «wget» локально на сервере nginx, то оба варианта работают нормально.

Конфигурация моего сайта выглядит так:

server {
  server_name timesheets timesheets.intranet.local;

  location / {
    proxy_pass http://127.0.0.1:8080;
  }

  listen [::]:443 ssl ipv6only=on;
  listen 443 ssl;
  ssl_certificate /root/timesheet.crt;
  ssl_certificate_key /root/timesheet.key;
}

Проблема не в разрешении имен. «wget» на клиентской машине правильно разрешает IP-адрес, но все равно не может получить страницу.

решение1

При настройке обратного проксирования необходимо обращать внимание не только на конфигурацию прокси-сервера, но и учитывать конфигурацию сервиса, стоящего за ним.

Прокси-сервер должен не только принимать имя в своем виртуальном хосте, но и выдавать заголовок Host, который ожидается от бэкенда. В этом случае проще всего настроить и прокси, и бэкенд на прием короткого неквалифицированного имени хоста.

Альтернативный способ может заключаться в переопределении того, какой заголовок хоста прокси отправляет на бэкенд. Тогда вам нужен только ваш бэкенд для сервера только этого имени хоста. Смотрите этот ответhttps://stackoverflow.com/questions/14352690/change-host-header-in-nginx-reverse-proxy

Связанный контент