[英]nginx error: openat() failed (20: not a directory) for images
我有一個 PHP 項目,一個 REST API。 Nginx 配置適用於 API 但不適用於上傳的圖像
圖像總是返回 404 錯誤
項目從/public目錄開始,upload目錄在public里面,所以圖片訪問url是這樣的:
DOMAIN.COM/upload/201812/20181204133821.jpg
實際的 NGINX 配置是
server {
listen 80;
listen [::]:80;
set $root_path '/usr/share/nginx/html/api/public';
root $root_path;
index index.php index.html index.htm;
server_name api-eduplus.blanco-estudio.com;
#try_files $uri $uri/ @rewrite;
try_files $uri $uri/ /index.php?q=$uri&$args;
location ~* \.(jpg|jpeg|png|gif)$ {
root $root_path;
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
#error_log logs/error.log warn;
}
所以API從/public目錄開始,圖像上傳到/public/upload/
還。 服務器上的 nginx 錯誤日志說:
2018/12/04 16:35:54 [error] 17338: *1 openat() "/usr/share/nginx/html/api/public/upload/201812/20181204133821.jpg" failed (20: Not a directory), request: "GET /upload/201812/20181204133821.jpg HTTP/1.1"
請幫忙,我真的卡住了
我剛剛在我的服務器上解決了這個問題。 錯誤的原因是符號鏈接。
我剛剛在服務器的 nginx 配置中遇到了這個(不是很清楚)錯誤消息:
"/path/to/index.html" is not found (20: Not a directory)
經過一些試驗和錯誤,我確定真正的原因是nginx的無法訪問該網站的文檔根目錄,因為路徑的一部分root
包含一個符號,但我不得不disable_symlinks on;
在我的主nginx.conf
文件中設置。
注釋掉disable_symlinks on;
行或將其更改為disable_symlinks off;
解決了這個問題。
也可以看看:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.