Laravel 7 в Ubuntu 20.04 с NGINX - изображения в каталоге storage / protected / images возвращают 404 при доступе по URL-адресу - PullRequest
0 голосов
/ 26 мая 2020

Я только что переместил приложение из локальной среды на тестовый / производственный сервер.

Все работает с диском AWS, но при переходе на локальный диск ae storage/protected/images, где хранятся мои изображения, Я получаю error 404 на всех образах с локального диска.

Присутствуют все маршруты и все контроллеры. Интересно то, что загружаемые файлы, которые я также храню в storage/protected/files, работают нормально, и я могу загрузить их без каких-либо проблем.

вот мой ImageViewController

пространство имен App \ Http \ Controllers \ Client;

use App\Exceptions\ErrorPageException;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;

class ImageViewController extends Controller
{
    public function getMainImage($name)
    {
        if(file_exists(storage_path().'/app/protected/images/'.$name)){
            $image = storage_path().'/app/protected/images/'.$name;
        }else{
            throw new ErrorPageException(404);
        }
        return response()->file($image);
    }

    public function getImage($type, $name)
    {
        if(file_exists(storage_path().'/app/protected/images/'.$type.'/'.$name)){
            $image = storage_path().'/app/protected/images/'.$type.'/'.$name;
        }else{
            throw new ErrorPageException(404);
        }
        return response()->file($image);
    }

}

, а прямой URL-адрес, который я использую для доступа к изображению, - example.com/images/image.png

Я подозреваю, что эта ошибка как-то связана с моим nginx настройка, если я не ошибаюсь.

Пожалуйста, поделитесь своими мыслями и помогите мне, если сможете.

1 Ответ

0 голосов
/ 26 мая 2020

Как я и подозревал, проблема была вызвана установкой nginx, поэтому вот что мне пришлось сделать, чтобы разобраться со всем этим:

server {
    listen 80;
    server_name server_domain_or_IP;
    root /var/www/laravel/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

источник: Как установить и настроить Laravel с LEMP в Ubuntu 18.04

...