簡體   English   中英

nginx 錯誤:圖像的 openat() 失敗(20:不是目錄)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM