簡體   English   中英

子目錄中特定文件類型的 Apache 代理/重寫設置

[英]Apache proxy / rewrite setup for specific file types inside sub directory

最近我不得不遷移一個將近 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

我也試過,下面的一個給我 Bad Request 你的瀏覽器發送了一個這個服務器無法理解的請求

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

以上相同,如果我將[P,L]修改為[R=301,L]它正確重定向到其他服務器,不知道為什么代理不起作用

要允許某些列入白名單的擴展,您可以使用 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 配置中正確設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM