/ / Apache - Съобщение за състояние на обратен прокси и HTTP 302 - apache, пренасочване, обратен прокси, http-status-code-302

Apache - Съобщение за състоянието на Reverse Proxy и HTTP 302 - apache, redirect, reverse-proxy, http-status-code-302

Моят екип се опитва да настрои Apache обратен прокси от клиентски сайт в един от нашите уеб приложения.

http://www.example.com/app1/some-path картите към http://internal1.example.com/some-path

В нашето приложение ние използваме подпори и имамеredirect = true за определени действия, за да се осигури определена функционалност. 302 съобщенията за състояние от тези пренасочвания водят до излизане на потребителя от прокси сървъра, което води до страница за грешка за крайния потребител.

Намерен е HTTP / 1.1 302 местоположение: http://internal.example.com/some-path/redirect

Има ли някакъв начин да настроите обратната прокси в apache, така че пренасочването да работи правилно?

http://www.example.com/app1/some-path/redirect

Отговори:

11 за отговор № 1

Има статия, озаглавена Стартиране на обратен прокси сървър в Apache което изглежда е насочено към проблема ви. Той дори използва същия пример.com и / app1, който имате в примера си. Отидете в раздела "Конфигуриране на прокси" за примери за това как да използвате ProxyPassReverse.


2 за отговор № 2

Най- Статия на AskApache е доста полезно, но на практика открих, че комбинация от правила за пренаписване и ProxyPassReverse са по-гъвкави. Така че в твоя случай ще направя нещо подобно:

    <VirtualHost example>
ServerName www.example.com

ProxyPassReverse /app1/some-path/ http://internal1.example.com/some-path/
RewriteEngine On
RewriteRule /app1/(.*)   http://internal1.example.com/some-path$1 [P]

...
</VirtualHost>

Това ми харесва по-добре, защото ти давапо-фин контрол върху пътищата, които "препращате към вътрешния сървър. В нашия случай искахме да изложим само част от приложението на трета страна. Имайте предвид, че това не се отнася за трудно кодирани връзки в HTML, които статията на AskApache покрива ,

Също така имайте предвид, че можете да имате няколко реда ProxyPassReverse:

    ProxyPassReverse / http://internal1.example.com/some-path
ProxyPassReverse / http://internal2.example.com/some-path

Споменавам това само защото друго приложение от трета страна, на което се обръщахме, изпращаше пренасочване, което не включваше вътрешното им име на хост, а само друг порт.

Като последна бележка, имайте предвид, че подпалвач е изключително полезно при отстраняване на грешки при пренасочването.


1 за отговор № 3

Опитайте да използвате AJP конектора вместо обратния прокси. Разбира се, това не е тривиална промяна, но открих, че много от кошмарите с URL адрес изчезват, когато използвате AJP вместо обратен прокси.