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

Используйте Nginx для сервера разных страниц в зависимости от IP-адреса / подсети

По ужасным причинам ... Я использую Nginx в качестве веб-сервера и хотел бы, чтобы он обслуживал одну страницу для внутренних пользователей (скажем, 10.0.0.0/16), а другую страницу для внешних пользователей на любом другом IP-адресе.

Например:

Используйте Nginx гео модуль. Он позволяет вам устанавливать значение переменной на основе IP-адреса клиента. geo директива должна быть в http раздел:

http {
  geo $client {
    default extra;
    10.0.0.0/8 intra;
  }

Вы можете использовать его позже в местах для поиска файлов

location / {
  try_files $uri.$client $uri = 404;
}

Это означает, что Nginx установит $client либо extra или intra на основе IP клиента. Предположим, это клиент интрасети. Если клиент просит page.html, Nginx будет искать файл /your/root/page.html.intra. Если такого файла нет, он будет искать /your/root/page.html. Если не удается найти ни один из них, Nginx возвращает ответ 404 «Не найдено». Подробнее о "try_files" в документация

Кстати, index Директива также поддерживает переменные. Например.

index index.$client.html index.html;