[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: mod_proxy mod_rewrite



Ivan Dubrov wrote:
Pavel V. Rochnyack wrote:


1. Использовать mod_jk - несколько полегче и ИМХО правильнее чем мод_прокси
1. mod_proxy_ajp вроде как ещё правильнее. Но это Apache 2.2, насколько я понимаю.

2. Вот это:
> надо чтобы запрос _из_ домена test.com преобразовывался таким образом.
мне кажется не реальным, либо рулится средствами томката.
В общем случае лучше разделить по именам и не греть голову.

3.Есть еще другой вариант, звучит он как "с требуемых хостов (не домена!) завернуть файрволлом траффик с 80 на 81 порт апача, а оттуда на требуемый томкат-сервис"

4. Ну и напоследок, беглый взгляд на правила реврайта и лог _не находит_ зацикливания.

Alex Mestiashvili пишет:
есть tomcat слушает 8080

есть две директории с одним и тем же контентом .

надо чтобы запрос из домена test.com преобразовывался таким образом .
http://myserver/my_app -> http://myserver/my_app1
а запросы из всех остальных доменов так и оставались
http://myserver/my_app -> http://myserver/my_app

а потом еще через mod_proxy отправлялись к tomcat-у

пытаюсь для этого настроить apache с mod_proxy и mod_rewrite

NameVirtualHost *
<VirtualHost *>
RewriteEngine on
RewriteOptions Inherit
RewriteCond %{REMOTE_ADDR} ^1\.2.*$
RewriteRule ^(.*)$ - [S=2,L]

## тоесть если REMOTE_ADDR=хост из домена 1 то пропустить следующие 2 правила .

RewriteCond %{REMOTE_ADDR} ^.*$
RewriteRule /my_app(.*)$ http://%{SERVER_NAME}/my_app1$1 [P]
RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 9

ProxyRequests Off
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
CustomLog /var/log/apache2/proxy_log common
</VirtualHost>






вот такой вариант заработал

NameVirtualHost *
<VirtualHost *>
      ProxyRequests Off
      <Proxy *>
              AddDefaultCharset off
              Order allow,deny
              Allow from all
      </Proxy>
      ProxyPass / http://localhost:8080/
      CustomLog /var/log/apache2/proxy_log common
      ProxyPassReverse / http://localhost:8080/
      RewriteEngine   on
RewriteCond %{REMOTE_ADDR} !((192\.168\.194\..*$)|(14\.5\..*$)|(14\.30\..*$))
      RewriteRule ^(.*)$ - [C]
# надо ограничить этим правилом , так как ограничения внутри tomcat-a уже не работают так как доступ через proxy с localhost-а .
      RewriteRule ^/myapp1(.*)$ /$1 [F,L]
      RewriteCond %{REMOTE_ADDR} ^((192\.168\.194\..*$)|(14\.5\..*$))
RewriteRule ^/myapp(.*)$ /myapp1$1 [R,L] RewriteRule "^/(.*)" "http://localhost:8080/$1"; [P] RewriteLog /var/log/apache2/rewrite.log
      RewriteLogLevel 9
</VirtualHost>


Reply to: