Настройка прокси / перезаписи Apache для определенных типов файлов внутри подкаталога - PullRequest
1 голос
/ 20 июня 2019

Недавно мне пришлось перенести некоторый сайт, которому было почти 15 лет, учитывая, что новый URL-адрес

https://mynew.domain.com

, а старый сайт был https://myold.domain.com (Внутренний IP: 192.168.1.15, который не доступен в свободном доступе)

На старом сайте у него был каталог, называемый "sitefiles", в котором много подпапок и файлов, таких как изображения, файлы и т. Д.

то, чего я хочу достичь, это предположить, что если пользователь нажимает URL в браузере, который был запросом файла с расширениями из белого списка, такими как .jpg, .jpeg, .png, .pdf, .doc, .docx, .gif, .svg, например,, затем обслуживайте эти запросы с внутреннего IP

https://mynew.domain.com/sitefiles/events/somedirectory/somefile.jpg

https://mynew.domain.com/sitefiles/somedoc.jpg

Обратите внимание, что каталог sitefiles довольно большой и его вложенный, я не знаю какчтобы обойти это, в настоящее время я попробовал

ProxyPass /sitefiles/ http://192.168.1.15/sitefiles
ProxyPassReverse /sitefiles/ http://192.168.1.15/sitefiles

Но

  • как мне сделать, чтобы белый список действительно был запросом для файлов из белого списка?
  • абсолютный путьдля файла действительно не предсказуемо для меня, мы можем передать что-то вроде

ProxyPass %{REQUEST_URI} http://192.168.1.15/$1

Я также пытался, ниже того, который дает мне Плохой запрос, ваш браузер отправил запрос, что этот сервер не может понять

RewriteCond %{REQUEST_URI} ^/sitefiles
RewriteRule ^\/?(.*)$ http://192.168.1.15/$1 [P,L]

Выше того же самого, если я изменю [P,L] на [R=301,L] он правильно перенаправляет на другой сервер, не уверен, почему прокси не работает

1 Ответ

1 голос
/ 20 июня 2019

Чтобы разрешить определенные расширения из белого списка, вы можете использовать правило mod_rewrite вместо ProxyPass:

RewriteEngine On

RewriteRule ^sitefiles/.+\.(?:jpe?g|png|pdf|docx?|gif|svg|pptx?)$ http://192.168.1.15/$0 [L,NC,P]
Флаг

P в этом правиле делает то, что ProxyPass делает для вас.

Предполагается, что mod_proxy правильно настроен в конфигурации Apache.

...