問題描述:
在/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