
Я хочу задать несколько Location
тегов в моей конфигурации Apache. Например: /image
, /file
, /audio
и передать его в localhost:port/path
. Сейчас я использую это для /image
:
<Location /image>
RewriteEngine on
Options +MultiViews +FollowSymLinks
AllowOverride All
ProxyPreserveHost On
ProxyPass "http://localhost:PORT/image"
ProxyPassReverse "http://localhost:PORT/image"
</Location>
Мне нужно писать этот кусок кода для каждого параметра? Или есть какой-то способ сократить это?
Спасибо!
решение1
<Location /image> RewriteEngine on Options +MultiViews +FollowSymLinks AllowOverride All ProxyPreserveHost On ProxyPass "http://localhost:PORT/image" ProxyPassReverse "http://localhost:PORT/image" </Location>
Нужно ли мне писать этот фрагмент кода для каждого параметра?
Нет. RewriteEngine
Директива ничего не делает там, и ни директивы , Options
ни AllowOverride
директивы не имеют смысла, если вы не сопоставляете ресурсы в локальной файловой системе. Эти опции контролируются и должны быть установлены "удалённым" веб-сервером, на который вы пересылаете запросы с помощью директивы ProxyPass
.
Поскольку эти директивы бесполезны, то вам не нужна скобка Location, чтобы задать их, и вы можете использовать встроенныйProxyPass
синтаксис, который рекомендуется в любом случае.
Это сокращает ваш синтаксис до только необходимых строк:
ProxyPreserveHost On
ProxyPass "/image" "http://localhost:PORT/image"
ProxyPassReverse "/image" "http://localhost:PORT/image"
ProxyPass "/file" "http://localhost:PORT/file"
ProxyPassReverse "/file" "http://localhost:PORT/file"
Apache httpd действительно предлагаетInclude
директива для сохранения единого фрагмента конфигурации с настройками, которые вы хотите включить дословно в разных местах, блоках VirtualHost, Location, Directory, не копируя одни и те же строки раз за разом.