Apache разрешить / запретить регулярное выражение IP - PullRequest
0 голосов
/ 09 января 2012

У меня интересная проблема. Моя компания размещает небольшой сервер приложений для клиента, и они хотят ограничить доступ только несколькими IP-адресами. Клиент - это большая компания со многими подразделениями, и каждое подразделение имеет свою собственную сетевую структуру.

Я не буду вдаваться в подробности, но из-за внутренней структуры моей компании для веб-серверов мы не можем использовать обычный синтаксис разрешения, запрета в 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 - это IP-адрес WAN этого подразделения, а 172 - балансировщик нагрузки моей компании.

Моя компания подтвердила, что если мы добавим IP-адрес рабочей станции пользователя в конфигурацию Apache, они смогут без проблем получить доступ к странице. Однако добавлять каждый IP-адрес было бы утомительно.

Есть ли способ заставить Apache обращать внимание только на средний IP (WAN IP), используя регулярные выражения? Или есть лучший способ настроить Apache?

1 Ответ

0 голосов
/ 17 октября 2012

Я не проверял это, но вы могли бы создать регулярное выражение, которое ищет вашу строку IP в любом месте поля.Первый ^ в вашем регулярном выражении означает, что он должен соответствовать началу строки, что здесь не так.

Что-то настолько простое, как это может работать:

RewriteCond %{HTTP:X-Forwarded-For} !213\.212\.45\.54

Обратная косая черта необходимаперед точками, потому что в противном случае.соответствует любому числу любых символов, включая ничего не совпадающее, это эквивалентно * в синтаксисе с подстановочными знаками.

Примерно так: если строка 213.212.45.54 находится где-либо в заголовке X-Forwarded-For, регулярное выражениебудет соответствовать.

...