По ужасным причинам ... Я использую Nginx в качестве веб-сервера и хотел бы, чтобы он обслуживал одну страницу для внутренних пользователей (скажем, 10.0.0.0/16), а другую страницу для внешних пользователей на любом другом IP-адресе.
Например:
«Внутренний» ПК с IP-адресом 10.0.0.34 переходит на страницу company.com/page.html и получает страницу internal.html
"Внешний" ПК с IP 8.8.8.8 переходит на company.com/page.html получает страницу external.html
Используйте 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;