У меня есть интересная проблема. Моя компания размещает небольшой сервер приложений для клиента, и они хотят ограничить доступ только к нескольким IP-адресам. Клиент - крупная компания со многими подразделениями, и каждое подразделение имеет свою собственную сетевую структуру.Apache allow/deny IP regex
Я не буду вдаваться в детали, но из-за внутренней структуры моей компании для веб-серверов мы не можем использовать обычный разрешить, запретить синтаксис в Apache. У нас есть балансировщики нагрузки, которые отправляются на веб-серверы, которые затем отправляются на сервер приложения. Вместо этого мы используем что-то вроде следующего в нашей конфигурации Apache:
RewriteCond %{HTTP:X-Forwarded-For} !^213.212.45.54
Мы используем заголовок X-Forwarded-For, чтобы соответствовать внешним IP-адресов. Проблема в том, что у одного из подразделений нашего клиента (назовите его подразделением A) его интернет-настройка проходит через внутренний прокси. Их внутренний прокси перенаправляет рабочую станцию IP каждого пользователя на наш веб-сервер. Это означает, что X-Forwarded-For заголовок для тех пользователей, выглядит примерно так:
10.123.16.23, 213.212.45.54, 172.20.162.2
10-адрес является рабочей станцией IP каждого пользователя в своей сети, 213 является WAN IP этого разделения, и 172 - это балансировка нагрузки моей компании.
Наша компания подтвердила, что если мы добавим IP-адрес рабочей станции пользователя в конфигурацию Apache, они смогут без проблем получить доступ к странице. Однако добавить каждый IP-адрес будет утомительным.
Есть ли способ сказать Apache только обратить внимание на средний IP (WAN IP), используя регулярные выражения? Или есть лучший способ настроить Apache?
Может быть, это поможет сориентировать вас в правильном направлении, регулярное выражение , \ S * (213 \. \ D + \. \ D + \. \ D +) \ S *, матчи и возвращает средний IP 213.212.45.54 , чтобы вы могли использовать это, чтобы вызвать RewriteRule. –