У меня есть куча субдоменов на одном сервере:
Все они находятся в одном виртуальном хосте Apache.
Мне нужно использовать фид, предоставляемый субдоменом новостей внутри субдомена a и b. Каналы обычно выглядят следующим образом:
В поддоменах a и b я использую функцию jjery ajax для загрузки данных из новостных лент и представляю их на a и b. Первоначально это не сработало из-за политики одного и того же происхождения .
Я смог переопределить это, добавив « Access-Control-Allow-Origin "*"
в мой конфигурационный файл Apache.
… но это работает только в Firefox, Chrome и Safari. Internet Explorer, похоже, игнорирует эту директиву.
Таким образом, мне нужно создать прокси.
Мне нужен новый каталог во всех моих подкомпонентах (например, /proxy
), который Apache обнаруживает, и перенаправляет на news.example.com, независимо от того, какой субдомен. Так:
Могу ли я сделать это непосредственно в подмодулях 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>