Назад | Перейти на главную страницу

nginx принудительно перезаписывает полный адрес

В моей корпоративной интрасети доступ к веб-сайтам можно получить двумя способами. Со своим псевдонимом вроде https://foo или с их полным адресом, например https://foo.example.internal.

Я хочу настроить свой сервер nginx, чтобы заставить пользователя использовать второй вариант. Итак, если они просматривают https://foo, Я хочу, чтобы сервер nginx переписал адрес на https://foo.example.internal.

Пробовал несколько вариантов:

http {
  server {
    server_name foo;

    # Test 1
    rewrite ^https://foo/(.*)$ https://foo.example.internal/$1;

    # Test 2
    rewrite ^/foo/(.*)$ https://foo.example.internal/$1;

    # Test 3
    rewrite ^/(.*) https://foo.example.internal/$1;
  }
}

Test1 и Test2 не имеет никакого эффекта (т.е. пользователь может получить доступ к веб-сайту через https://foo или https://foo.example.internal), пока Test3 перезаписывает ли https://foo к https://foo.example.internal но последняя не работает (сервер nginx ничего не возвращает, я подозреваю, что в этой перезаписи URL есть какой-то цикл).

Итак, как я могу заставить nginx переписать https://foo к https://foo.example.internal?

Спасибо

Наконец нашел проблему. Рабочее решение делается установкой 2-х серверов:

http {

  server {
    server_name foo;
    listen 443 ssl;

    return 301 https://foo.example.internal$request_uri;
  }

  server {
    server_name foo.example.internal;
    listen 443 ssl;

    # rest of configuration
  }


}