apache - mod_rewrite + mod_proxy работает в промежуточном режиме, не работает в производственной среде (параметр [P] игнорируется)

Я настроил перенаправление на моем виртуальном хосте Apache, обслуживающем несколько поддоменов - назовите их a.example.com и b.example.com - обслуживая рубин на рельсах приложение.

В моем конфигурационном файле виртуального хоста у меня есть следующее правило:

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

Идея в том, что я могу сделать http://a.example.com/proxy/news/a и получить содержимое http://news.example.com/news/a , но в том же субдомене, поэтому ajax не считает, что мои запросы ajax являются междоменными - дополнительная информация по этому вопросу SO .

Проблема в том, что, хотя он отлично работает в моей тестовой среде, он не работает в производственной среде!

Оба сервера являются сервером Ubuntu 10.04. Apache пришел из стандартных репозиториев ubuntu с использованием apt-get install .

Я сделал различие всего / etc / apache2 / dir, и единственное отличие - это имя сервера.

Если я изменю последний параметр на [L], я получу перенаправление, поэтому я думаю, что mod_rewrite работает. Он просто не работает с mod_proxy.

Глядя на журналы ( / var / log / apache2 и журнал rails), кажется, что правило перезаписи в производственной среде просто игнорируется - журналы точно такие же, как если бы это было не так. нет там.

Как я могу это отладить? Могу ли я заставить Apache предоставить мне дополнительную информацию о том, почему это конкретное правило не применяется, когда я получаю доступ к / proxy ?

2
задан 23 May 2017 в 15:41
1 ответ

After browsing RewriteLog as larsks suggested, we have realized that Apache was indeed doing the redirects - the problem was somewhere else.

In fact, it was the module we where using to handle ruby - Phusion Passenger.

We had one of those "OMG the server is down!" moments and we tried setting up the PassengerHighPerformance variable to on.

Unfortunately, this setting basically means "ignore mod_rewrite" :)

Now we have tuned it out a bit - it's on in all the locations, except when they begin by /proxy:

PassengerHighPerformance On
...
<location /proxy>
  PassengerHighPerformance Off
</location>

Once we added that configuration option to our virtualhost config file, things started working again!

If you come here via google and found this useful, please upvote Larsks' comment on the OP. His comment was what put us on the right track.

2
ответ дан 3 December 2019 в 12:00

Теги

Похожие вопросы