Я хотел бы динамически проксировать подпапки для поддоменов на другом хосте. Например, у меня есть следующая установка обратного прокси для одной подпапки в поддомен:
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /app1/ http://app1.myotherserver.tld/
ProxyPassReverse /app1/ http://app1.myotherserver.tld/
Вышеупомянутое работает нормально (за исключением завершающего символа "/"). Однако мне нужно добавить еще 10 таких же, как app2, app3, app4 и т. Д. ... и, возможно, больше в будущем. Очевидно, нет смысла добавлять каждую.
Используя страницу в http://httpd.apache.org/docs/current/rewrite/proxy.html в качестве справки я делаю это:
RewriteRule ^/(.*)/$ http://$1.myotherserver.tld/ [P]
RewriteRule ^/(.*)/(.*)$ http://$1.myotherserver.tld/$2 [P]
ProxyPassReverse /$1/ http://$1.myotherserver.tld/
Это вроде работает, но мои существующие подпапки попадают под это правило, и у меня все еще есть проблема с завершающим "/".
Я пробовал добавить "?" к первому правилу, но это все нарушает:
RewriteRule ^/(.*)?/$ http://$1.myotherserver.tld/ [P]
Как мне сделать так, чтобы что-то вроде "http; // www.mywebserver.tld / app2" работало, но при этом разрешить действующие URL-адреса, такие как эти?
http://www.mywebserver.tld/style.css
http://www.mywebserver.tld/images/title.png
http://www.mywebserver.tld/existingsubfolder
http://www.mywebserver.tld/existingsubfolder/page.php
Вы захотите использовать условия перезаписи, чтобы убедиться, что файлы не существуют перед проксированием.
Кроме того, можно добиться желаемого поведения с помощью всего одного правила:
RewriteCond /path/to/docroot%{REQUEST_URI} !-f
RewriteCond /path/to/docroot%{REQUEST_URI} !-d
RewriteRule ^/[^/]*/(.*)$ http://$1.myotherserver.tld/ [P]
ProxyPassReverse /$1/ http://$1.myotherserver.tld/