所以,我想將我的所有影像請求重定向到另一臺服務器,但我想在這樣做之前檢查 請求image/webp的accept標頭中是否存在,我打算在另一臺服務器上進行驗證,但我認為它在 nginx 中會更好,是否可以這樣做?
如果標題不存在,我只想保持原樣(提供靜態影像)
這就是我所擁有的:
location ~ \.(png|jpg|jpeg)$ {
proxy_pass ...;
}
uj5u.com熱心網友回復:
您可以使用以下內容:
map $http_accept $local {
~image/webp '';
default $uri;
}
server {
...
location ~ \.(png|jpe?g)$ {
try_files $local @remote;
}
location @remote {
proxy_pass ...
}
}
但是,如果在本地服務器上找不到請求的檔案,請求將被代理到您的遠程服務器。如果它不適合您,可能的方法之一是使用evil if:
location ~ \.(png|jpg|jpeg)$ {
if ($http_accept ~ image/webp) {
proxy_pass ...
}
}
這應該適用于現代 nginx 版本,并且if在任何情況下都不是邪惡的,但這正是我最好避免它的地方。作為替代方案,您可以使用這個:
map $http_accept $locname {
~image/webp remote;
default local;
}
server {
...
location ~ \.(png|jpe?g)$ {
try_files "" @$locname;
}
location @local {
# serve the file locally
}
location @remote {
proxy_pass ...
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360691.html
標籤:nginx
