Apache. Могу ли я сделать прокси-сервер только с Apache?

У меня есть куча субдоменов на одном сервере:

  • a.example.com
  • b.example.com
  • news.example.com

Все они находятся в одном виртуальном хосте Apache.

Мне нужно использовать фид, предоставляемый субдоменом новостей внутри субдомена a и b. Каналы обычно выглядят следующим образом:

  • news.example.com/news/a
  • news.example.com/news/b

В поддоменах a и b я использую функцию jjery ajax для загрузки данных из новостных лент и представляю их на a и b. Первоначально это не сработало из-за политики одного и того же происхождения .

Я смог переопределить это, добавив « Access-Control-Allow-Origin "*" в мой конфигурационный файл Apache.

… но это работает только в Firefox, Chrome и Safari. Internet Explorer, похоже, игнорирует эту директиву.

Таким образом, мне нужно создать прокси.

Мне нужен новый каталог во всех моих подкомпонентах (например, /proxy ), который Apache обнаруживает, и перенаправляет на news.example.com, независимо от того, какой субдомен. Так:

  • a.example.com/proxy/news/a -> вернуть содержимое news.example.com/news/a
  • b.example.com/proxy/news/b -> вернуть содержимое news.example.com/news/b

Могу ли я сделать это непосредственно в подмодулях Apache + (например, mod_rewrite), или мне нужно использовать для этого скриптовый язык, например PHP?

Вам нужна директива ProxyPass .

 ProxyPass /proxy/news/a http://news.example.com/news/a 

В конце мы смогли сделать прокси-сервер, используя комбинацию из двух модулей: mod_rewrite и mod_proxy .

Синтаксис был следующим:

 rewriteEngine on rewriteRule proxy/(.+)$ http://news.example.com/$1 [P] 

[P] в конце говорит правилу «действовать как прокси» и не работает без mod_proxy. Без него apache делает «перенаправление» (URL-адрес в верхней части страницы изменяется) вместо «просто обслуживает страницу».

Apache может быть настроен на использование apache:

рассмотрим этот рабочий пример кода (прокси-часть):

 <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName ci.testserver.com ServerAlias ci ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPreserveHost on ProxyPass / http://localhost:8080/ </VirtualHost>