Как переслать методы HTTP из apache2 с помощью proxy_ajp в tomcat - PullRequest
0 голосов
/ 22 апреля 2020

Я настроил и веб-сервер с apache2, затем прокси-запрос на tomcat с протоколом ajp, например:

<host *:443>

        ProxyRequests On
        ProxyPreserveHost On
        <Proxy *>
          Order allow,deny
          Allow from all
          AllowMethods GET PUT DELETE POST OPTIONS
        </Proxy>
        ProxyPass / ajp://some_vhost:8009/
        ProxyPassReverse / ajp://some_vhost:8009/

Все запросы, полученные от сервера apache2, перенаправляются на метод GET HTTP для tomcat, поэтому, если вы слушаете для некоторой операции отдыха метод post это поведение вызывает неподдерживаемый метод.

поэтому я хотел бы знать, как перенаправить оригинальный метод HTTP-запроса в контейнер Tomcat через соединитель AJP

Actual Сценарий: клиент -> POST req Apache2 -> метод GET для apache tomcat. Что я хочу, клиент -> POST req Apache2 -> POST метод для apache tomcat.

Заранее спасибо!

UPDATE.

У меня есть условие перезаписи на прослушивание vhost на порту 80, который переписывает на https

RewriteEngine on
        RewriteCond %{SERVER_NAME} =www.mydomain.com [OR]
        RewriteCond %{SERVER_NAME} =mydomain.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Как я могу переписать методы Http тоже ?? Я думаю, что это проблема, потому что, когда я запускаю запрос с https: он работает

1 Ответ

0 голосов
/ 27 апреля 2020

Ваш анализ неверен. httpd всегда перенаправляет оригинальный метод HTTP в Tomcat по протоколу AJP.

Проблема заключается в перенаправлении HTTPS. Когда исходный POST перенаправляется, клиент отвечает GET. Вы хотите выполнить редирект 307, а не 301.

Примечание. Мой (вероятно, устаревший) опыт заключается в том, что клиенты не всегда правильно реагируют на 307.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...