nginx 圖片訪問404 (使用location中使用 root,alias的區別)


問題描述:

在/data/code_img/文件下有很多驗證碼圖片,想將他們展示出來
希望通過 http://127.0.0.1/img/1.png 這種形式訪問到對應圖片,剛開始nginx中配置如下


server {
        server_name location;
        root /data/code_img;
        location = / {
        }

        location = /index.html {

        }

        location ^~  /img/ {
        root /data/code_img/;
       }


        location ^~ /static {
        }

        location  / {
                 proxy_pass         http://127.0.0.1:80/;
                 proxy_redirect     off;
                 proxy_set_header   Host             $host;
                 proxy_set_header   X-Real-IP        $remote_addr;
                 proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    




}

圖片在對應文件下存在時,仍難訪問失敗,返回404

解決問題

通過日志發現,實際訪問http://127.0.0.1/img/1.png 時,請求的文件地址為 /data/code_img/img/1.png ,而這個路徑是不存在的,所以返回404

才想到是root 路徑配置問題。
應該將

  location ^~  /img/ {
        root /data/code_img/;
       }

改為

location ^~ /img/ {
        alias  /data/imgs/;
    }

這樣,再次訪問時就可以正常訪問了

當我同樣瀏覽器訪問  http://127.0.0.1/img/1.png

使用root 會映射為 /data/code_img/img/1.png

使用alias 會直接映射 /data/code_img/1.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM