ProxyPassReverse
используется для изменения заголовков, отправляемых приложением (appcluster) на Apache, прежде чем Apache отправит его в браузер.Например, если приложение находится на http://localhost:9013/, и оно пытается перенаправить браузер, скажем, на /new_location/
, то оно ответит перенаправлением и заголовком местоположения http://localhost:9013/new_location/,, и Apache приметэто и отправить его в браузер.Проблема в том, что браузер (при условии, что он где-то еще) затем пытается отправить запрос на http://localhost:9013/new_location/, и получает ошибку.
То, что делает ProxyPassReverse, перехватывает эти заголовки и переписывает их так, чтобы они соответствовали тому, как выглядит сервер Apache, который выполняет прокси.Поэтому, если мой сервер Apache содержит http://myhost.com/ и у меня есть ProxyPass
, который указывает /
на http://localhost:9013/App,, если приложение, расположенное на локальном хосте: 9013 возвращает перенаправление на http://localhost:9013/App/new_location/,Мне нужно будет использовать ProxyPassReverse
, чтобы Apache переписал его в http://myhost.com/new_location/ перед отправкой запроса обратно в браузер.
Если вы не отправляете перенаправления, он не собираетсябыть проблемой, но это не повредит иметь его там в случае, если редирект 301/302 возвращается.Что касается mod_rewrite, RewriteRule применяется к запросу, поступающему в приложение, а не к ответу, поступающему из приложения.Таким образом, они являются взаимоисключающими событиями.