Как направить посетителя на определенный http-сервис в соответствии с его `хостом`?

Как направить посетителя на определенный http-сервис в соответствии с его `хостом`?

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

Сценарий заключается в том, что для внутренних пользователей с именем хоста от 192.168.1.1до 192.168.1.255я хочу предоставить им некоторую веб-службу, но для других внешних посетителей я не хочу, чтобы это было реализовано.

Я знаю, что мог бы IP_TABLESвключить эту функцию, но я использую правила IP_TABLE в основном для целей брандмауэра и не хочу смешивать их с этой конфигурацией.

Есть ли какая-либо конфигурация, доступная мне в nginx.conf?

решение1

Вы можете использовать модуль GEO вместе с директивой карты:

http {
  geo $special_service {
    default 0;
    192.168.1.0/24 1;
  }
  server {
    if ($special_service) {
      return 302 $scheme://$server_name/special-service/;
    }
  }
}

решение2

Создайте отдельный locationблок, посвященный конфиденциальному контенту.

Помните, что директивы конфигурации не наследуются; вам нужно будет включить в новый блок все, что находится в существующем `location и что необходимо для вашего контента.

location /path/to/sensitive/stuff {
    # any other config that you need goes here..
    # ...
    allow 192.168.1.0/24;
    deny all;
}

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