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

Прокси-сервер Apache 2.4 для внешнего, перенаправление для внутреннего

Я пытаюсь настроить обратный прокси-сервер, чтобы разрешить только несколько выбранных диапазонов IP для прокси-сервера на внутренний хост, в то время как я хотел бы, чтобы кто-либо другой, не входящий в диапазоны IP, перенаправлял на наш внутренний именованный хост. В этой настройке веб-сервис будет работать, в то время как любой, кто не подключен к нашей сети через VPN, не сможет перейти к внутреннему ресурсу. Я безуспешно пытался заставить это работать, моя частичная конфигурация в настоящее время выглядит следующим образом:

       ProxyRequests Off
    <Proxy *>
            Allow from all
    </Proxy>
    <Location />
            Allow From xxx.xxx.xxx.xxx/24 1xxx.xxx.xxx.xxx/23
            Deny From All
            ProxyPass http://server.local.corp:8000/
            ProxyPassReverse http://server.local.corp:8000/
    </Location>

Эта конфигурация, похоже, хорошо работает для блокировки других диапазонов IP от возможности прокси-сервера, однако я не понимаю, как я могу добавить оператор перенаправления для кого-либо еще.

редактировать Следуя совету первого ответа, мой код теперь выглядит так:

<If "%{REMOTE_ADDR} -ipmatch 'xxx.xxx.xxx.xxx/24'">
  ProxyPass / http://server.local.corp:8000/
  ProxyPassReverse / http://server.local.corp:8000/
</If>

И apache при перезапуске выдает следующую ошибку:

ProxyPass cannot occur within <If> section
Action 'configtest' failed.
The Apache error log may have more information.

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

Однако логика должна работать.

Используйте для перенаправления XTERN на поддомен, например. xtern.example.com и разрешите проблемы с виртуальными хостами!

<VirtualHost *:80>
    ServerName example.com

    <If "%{REMOTE_ADDR} !-ipmatch 'xxx.xxx.xxx.xxx/24'">
        Redirect "/" "http://xtern.example.com"
    </If>


    ProxyPass http://server.local.corp:8000/
    ProxyPassReverse http://server.local.corp:8000/
</VirtualHost>

<VirtualHost *:80>
    ServerName xtern.example.com

    ProxyPass http://server.xtern.corp:8000/
    ProxyPassReverse http://server.xtern.corp:8000/
</VirtualHost>

Вам необходимо заключить директивы ProxyPass и Redirect во вновь введенный оператор If: <If expression> ProxyPass… </If> "

Взгляни на http://httpd.apache.org/docs/2.4/mod/core.html#if чтобы узнать больше о директиве If, и http://httpd.apache.org/docs/2.4/expr.html чтобы узнать, как написать выражение Apache (похоже, -ipmatch - это то, что вы ищете)

Обратите внимание, что это действует только в Apache httpd 2.4.