Конфигурация обратного прокси apache2
У меня есть одно приложение, которое слушает по TCP 127.0.0.1:81. Я хочу выполнить следующее перенаправление:
www.example.com/?requestid=123456 --> http://127.0.0.1:81/?requestid=123456
www.example.com/ANYTHING_ELSE --> MY_IP_THAT_APACHE_LISTENS_ON
Насколько я понимаю, если я не буду что-то переписывать явно, он будет следовать обычному пути к / var / www / html.
Моя /etc/apache2/sites-enabled/000-default.conf конфигурация:
<VirtualHost *:80>
ServerName example.com
ServerAdmin example@example.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Location />
RewriteEngine On
RewriteRule ^/?requestid(.*)$ http://127.0.0.1:81/$1 [P]
ProxyPassReverse http://127.0.0.1:81/
Order allow,deny
Allow from all
</Location>
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Почему он не переписывает правильно и продолжает бить нормальный патч?
Not Found
The requested URL /bullshit was not found on this server.
Apache/2.4.25 (Debian) Server at example.com Port 80
1 ответ
Ответ был опубликован: [переполнение стека]
Из директивы RewriteRule:
В контексте VirtualHost шаблон будет сначала сопоставляться с частью URL после имени хоста и порта, а также перед строкой запроса (например, "/app1/index.html"). Это (%-декодированный) URL-путь.
Если вы хотите сопоставить имя хоста, порт или строку запроса, используйте RewriteCond с переменными%{HTTP_HOST}, %{SERVER_PORT} или%{QUERY_STRING} соответственно.
Итак, вам понадобится что-то вроде этого:
RewriteEngine On
RewriteCond %{QUERY_STRING} requestid=(.+)
RewriteRule ^/$ http://127.0.0.1:81/?requestid=%1 [P]