Apache HTTPD - AliasMatch и ProxyPass в Virtualhost - PullRequest
0 голосов
/ 04 октября 2018

У меня есть API бэкэнда, который похож на это:

http://192.168.65.203:2022/page/index.jsp

, и у меня есть сервер Apache httpd в качестве 1-го уровня перед ударным бэкэндом.Я установил порт как 8090.

Теперь я хочу, чтобы файл изображения получался только с httpd-сервера, а не с внутреннего сервера.Так что мой VirtualHost выглядит так:

<VirtualHost *:8090>
ProxyPreserveHost On
ProxyRequests off
<Directory "/usr/share/myfile">
    Options Indexes FollowSymLinks
    AllowOverride None
    order allow,deny
    Allow from all
    Require all granted
</Directory>
AliasMatch ^/(.*\.gif|.*\.jpg|.*\.jpeg|.*\.png|.*\.css|.*\.swf)$ /usr/share/myfile/$1
ProxyPass / http://192.168.65.203:2022/
ProxyPassReverse / http://192.168.65.203:2022/

Проблема: изображение все еще загружается с внутреннего сервера.Если я отключаю proxypass и proxypassreserve, он работает нормально (изображение может загружаться с сервера httpd).

Ожидание: как я могу контролировать, если изображение найдено (по правилу псевдонима), оно не должно идти на proxypass?или есть другой способ?

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Директива!нужно.Ниже приведено решение моей проблемы.

<VirtualHost *:8090>
ProxyPreserveHost On
ProxyRequests off
<Directory "/usr/share/myfile">
    Options Indexes FollowSymLinks
    AllowOverride None
    order allow,deny
    Allow from all
    Require all granted
</Directory>
DocumentRoot "/usr/share/myfile"
ProxyPassMatch ^/(.*\.gif|.*\.jpg|.*\.jpeg|.*\.png|.*\.css|.*\.swf)$ !
ProxyPass / http://192.168.65.203:2022/
ProxyPassReverse / http://192.168.65.203:2022/
</VirtualHost>

Когда запрос имеет тип изображения, он отправляется в локальную файловую систему "/ usr / share / myfile" и директиву!это как остановить прокси.Проверьте здесь для более подробной информации по этой директиве.

0 голосов
/ 11 октября 2018

Замените [1] на [2] и попробуйте:

[1] : 
AliasMatch ^/(.*\.gif|.*\.jpg|.*\.jpeg|.*\.png|.*\.css|.*\.swf)$ /usr/share/myfile/$1

[2] :
ProxyPassMatch ^/(*.gif)$   !
ProxyPassMatch ^/(*.jpg)$   !
ProxyPassMatch ^/(*.jpeg)$  !
ProxyPassMatch ^/(*.png)$   !
ProxyPassMatch ^/(*.css)$   !
ProxyPassMatch ^/(*.swf)$   !
...