#laravel #nginx #laravel-7
Вопрос:
У меня есть список флагов, расположенных по адресу :
/home/bheng/app/public/assets/be/img/flags/
...
-rw-r--r-- 1 robot robot 4655 Apr 29 16:34 tf_64.png
-rw-r--r-- 1 robot robot 3024 Apr 29 16:34 td_64.png
-rw-r--r-- 1 robot robot 5379 Apr 29 16:34 tc_64.png
-rw-r--r-- 1 robot robot 5316 Apr 29 16:34 sz_64.png
-rw-r--r-- 1 robot robot 3486 Apr 29 16:34 sy_64.png
-rw-r--r-- 1 robot robot 4902 Apr 29 16:34 sx_64.png
-rw-r--r-- 1 robot robot 3508 Apr 29 16:34 sv_64.png
-rw-r--r-- 1 robot robot 3986 Apr 29 16:34 st_64.png
-rw-r--r-- 1 robot robot 4290 Apr 29 16:34 ss_64.png
-rw-r--r-- 1 robot robot 3765 Apr 29 16:34 sr_64.png
-rw-r--r-- 1 robot robot 3856 Apr 29 16:34 so_64.png
-rw-r--r-- 1 robot robot 3580 Apr 29 16:34 sn_64.png
-rw-r--r-- 1 robot robot 4959 Apr 29 16:34 sm_64.png
-rw-r--r-- 1 robot robot 3077 Apr 29 16:34 sl_64.png
-rw-r--r-- 1 robot robot 4483 Apr 29 16:34 sk_64.png
-rw-r--r-- 1 robot robot 3517 Apr 29 16:34 sj_64.png
-rw-r--r-- 1 robot robot 3483 Apr 29 16:34 si_64.png
drwxr-xr-x 2 robot robot 12288 Apr 29 16:34 .
┌──[robot@world]──[/home/bheng/app/public/assets/be/img/flags]
└──
Я хочу загрузить это изображение при посещении
https://www.bunlongheng.com/flags/*
Экс.
https://www.bunlongheng.com/flags/sn_64.png
Я попытался добавить эту строку в свой nginx
location ^~ /flags/ {
root /home/bheng/app/public/assets/be/img/flags/;
}
Я все еще получаю 404 по своему URL : https://www.bunlongheng.com/flags/sn_64.png
Что же упустил?
Также
Я пытался alias
location /flags/ {
alias /home/bheng/app/public/assets/be/img/flags/;
#root /home/bheng/app/public/assets/be/img/flags/;
}
Комментарии:
1. есть два варианта: во-первых, вы можете поместить их в хранилище и с помощью хранилища:ссылка, во-вторых: вы можете использовать webpack для копирования ресурсов из ресурсов/активов/изображений в общедоступные/активы/изображения.
2. Как я могу заставить его работать, не перемещая папки? Вся моя структура проекта
/assets/
уже существует, и я хотел бы сохранить ее такой.3. Обратите внимание, если я помещу полный маршрут работ : bunlongheng.com/assets/be/img/flags/si_64.png
4. это не стандартный способ, если вы посмотрите на laravel, все они следуют этим решениям. Если у вас есть CI/CD, единственное, что вам нужно, — это просто скопировать из ресурсов в общедоступные без необходимости изменять конфигурацию nginx.
5. для локальной разработки вы также можете использовать символическую ссылку!
Ответ №1:
Вам нужно rewrite
вместо alias
:
location ~ /assets/be/img/flags/(?<filename>. )$ {
rewrite ^ /flags/$filename last;
}
или другим способом, возможно, вам следует использовать root:
location ~ /flags/ {
root /assets/be/img/flags/;
}
но нужно использовать оба способа php artisan storage:link
, потому что это должен быть общедоступный путь nginx.
Комментарии:
1. Мне нравится 2-й, все еще 404 bunlongheng.com/flags/si_64.png