Скажем, у меня есть следующий поддомен с собственным корнем документа и т. Д.:
monad2.mysite.com
Я хочу, чтобы все запросы передавались на IP-адрес (например, 193.159.3.129
), но они должны проходить через сервер в mysite.com
(при условии monad2
находится на этом же сервере).
У меня есть следующая конфигурация (htaccess), которая работает до поддомена, но не может проксировать любой другой запрос ...
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://193.159.3.129/$1 [P]
Моя проблема в том, что пока он работает для http://monad2.mysite.com/a.php
(url остается прежним), он не работает с такими запросами, как http://monad2.mysite.com/a/b
(URL преобразован в http://193.159.3.129/a/b
). Обратите внимание, что последний адрес показывает список каталогов проксируемого сервера, который является правильным, за исключением того, что субдомен изменился на ip.
Кроме того, я полагаю, эта система определенно не будет работать с запросами HTTPS, верно?
Редактировать: После еще нескольких попыток устранения неполадок я точно нашел причину проблемы. Всякий раз, когда я пытаюсь получить доступ к каталогу без последней косой черты, прокси не работает, и я получаю IP-адрес. Пример:
Original | Result
--------------------------------+--------------------------------
http://monad2.mysite.com | http://monad2.mysite.com
http://monad2.mysite.com/a/ | http://monad2.mysite.com/a/
http://monad2.mysite.com/a | http://193.159.3.129/a/ <- !
http://monad2.mysite.com/a.php | http://monad2.mysite.com/a.php
Тебе нужно ProxyPassReverse
- ловит Location
в заголовках ответов и изменяет их, чтобы клиент продолжал разговаривать с прокси, а не с внутренним сервером.
ProxyPass
и ProxyPassReverse
не может быть в .htaccess
файл - поэтому замените текущее правило перезаписи этим, которое должно быть внутри вашего <VirtualHost>
блок для поддомена:
ProxyPass / http://193.159.3.129/
ProxyPassReverse / http://193.159.3.129/
В стороне: не используйте .htaccess
когда можно этого избежать. Обзор Документация Apache по этому вопросу.
Как правило, вы должны использовать файлы .htaccess только тогда, когда у вас нет доступа к основному файлу конфигурации сервера.