我有一個工具,下載一堆tarball和補丁,我正在鏡像到一個本地NGINX服務器的過程中,以加快下載過程,並給我們更嚴格的控制什麼是使用。爲了使工具正常工作,本地文件名必須與遠程文件名匹配(路徑無關緊要),但由於該工具考慮了文件名,我遇到了一個?
的問題。nginx重寫替換單個字符
一個例子是下載此遠程補丁:
的文件名,就工具而言,是openssl-1.0.2d-parallel-build.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d
它在中間一個可愛的小?
和本地鏡像有是:
該工具使用wget來下載文件,但不代替「?」 '%3f',所以NGINX服務器返回一個404.如果你手動替換'?' '%3f',那麼wget正常工作。
我會很好的NGINX服務器從不把?
作爲一個查詢字符串,但如果這是不可能的,我需要一種方法來重寫uri,使文件正確下載。我認爲它會是這樣的:
rewrite ^(.*)\?(.*)$ $1%3f$2 permanent;
但這並不能解決我的問題。鏡像文件夾被定義爲/etc/nginx/apps/mirror.conf
如下的別名,如果該事項:
location /mirror {
autoindex on;
alias /var/lib/dl-cache;
}
可以使用一個小的幫助縮小差距。
管理錯過重寫使用規範化的URI,謝謝。 – phill