Nginx

重定向在 nginx 上導致 404 錯誤

  • January 20, 2022

如果使用者嘗試僅在瀏覽器中直接訪問圖像文件,我該如何重定向?我仍然希望保留允許社交媒體網站通過熱連結嵌入我們的圖像的能力。我只希望使用者通過瀏覽器直接訪問圖像進行重定向。

這是我的 nginx 配置文件

proxy_cache_path /var/www/img.example.com/htdocs/cache-store levels=1:2 keys_zone=pixstore:10m max_size=5g inactive=7d use_temp_path=off;
server {

   server_name img.example.com www.img.example.com;

   access_log /var/log/nginx/img.example.com.access.log ;
   error_log /var/log/nginx/img.example.com.error.log;

   add_header X-Proxy-Cache $upstream_cache_status;
   location / {
       proxy_cache pixstore;
       proxy_cache_revalidate on;
       proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
       proxy_cache_lock on;
       add_header X-Cache-Status $upstream_cache_status;
       proxy_pass http://xxx.xxx.xxx.xxx:8090;
       proxy_redirect off;
       include proxy_params;
       proxy_cache_valid 200 7d;
       proxy_cache_valid 404 5m;
   }

   location ~ "^/c/600x1200_90_webp/img-master/img/\d+/\d+/\d+/\d+/\d+/\d+/((?<filenum>\d+)[^/]+\.(jpg|png|webp))$" {
   valid_referers server_names;
   if ($invalid_referer = "0") {
   return 301 http://view.example.com/artwork/$filenum; }
   }

}

nginx錯誤日誌

2022/01/19 12:09:23 [error] 7426#7426: *30 open() "/usr/share/nginx/html/c/600x1200_90_webp/img-master/img/2021/06/09/00/00/05/90423484_p0_master1200.jpg" failed (2: No such file or directory), client: xxx.xxx.xxx.xxx, server: img.example.com, request: "GET /c/600x1200_90_webp/img-master/img/2021/06/09/00/00/05/90423484_p0_master1200.jpg HTTP/1.1", host: "img.example.com"

重定向不起作用,但如果我嘗試訪問任何圖像文件,它會給我一個 404 錯誤。我將其設置為反向代理站點,因此我沒有定義根路徑。我怎樣才能解決這個問題?

由於您沒有為圖像位置定義根路徑,nginx因此使用預設路徑 - /usr/share/nginx/html/。如果您希望獲取這些文件,proxy_pass您還需要將配置複製proxy_pass到此位置。

引用自:https://serverfault.com/questions/1090575