Size: a a a

2021 April 06

АА

Александр Арлашкин... in nginx_ru
https://habr.com/ru/post/348206/

следуйте правилам, у вас второй полностью соответствует, потому в приоритете
источник

A

Andrey in nginx_ru
у меня же регулярка
location ~ /storage/scorm/(.*)/scormdriver/ {

разве запрос /storage/scorm/6059b9a9c4f86033515b314e/scormdriver/indexAPI.html не должен сюда попадать?
источник

АА

Александр Арлашкин... in nginx_ru
только если не найден префиксный
источник

АА

Александр Арлашкин... in nginx_ru
Важно понимать, что по умолчанию Nginx будет обслуживать регулярные выражения, отдавая предпочтение совпадениям по префиксам. Однако сначала он оценивает префиксные location-ы, позволяя администратору переопределять это поведение, указав location-ы с помощью модификаторов = и ^~.
источник

A

Andrey in nginx_ru
даже если я указыаю
location ^~ /storage/scorm/(.*)/scormdriver/ {

то запрос все равно попадает в
location /storage/scorm {
источник

A

Andrey in nginx_ru
но с ^~ не работают регуряки
источник

АА

Александр Арлашкин... in nginx_ru
источник

A

Andrey in nginx_ru
добавил конфиг и через этот сайт показывает что должно определяться локейшин
location ~ /storage/scorm/(.*)/scormdriver/ {


но на сервере почему-то не так, кто врет?
источник

АА

Александр Арлашкин... in nginx_ru
хм, а не попадает "по логам" тоже или просто отдаёт, что получается? Может попадает, да реврайт не работает, переменные там не определяются и тп
источник

A

Andrey in nginx_ru
добавил в каждый локейшин access_log и проверил по логам куда попадает запрос и почему-то попадает в
location /storage/scorm {
источник

A

Andrey in nginx_ru
if ($request_uri ~ ^/storage/scorm/(.*)$ ) {
 set $custom_uri /self_study/scormcheck?patch=;
}

location / {
 access_log /var/log/nginx/debug_root.log main;
 root $latest;
 try_files $uri $uri/ /index.php?_url=$uri&$args;
}

location ~ /storage/scorm/(.*)/scormdriver/ {
 access_log /var/log/nginx/debug_scorm.log main;
 alias /srv/storage_data/app/public/scorm/$1/scormdriver/;
 try_files $uri /indexAPI.html;
 index indexAPI.html;
}

location /storage/scorm {
 access_log /var/log/nginx/debug_scorm1.log main;
 root $latest;
 rewrite ^/storage/scorm/(.*)$ self_study/scormcheck?path=$1 break;
}

location /storage {
 access_log /var/log/nginx/debug_scorm2.log main;
 internal;
 alias /srv/storage_data/app/public/;
 try_files $uri =404;
}


пробую
curl -I -XGET https://example.com/storage/scorm/6059b9a9c4f86033515b314e/scormdriver/indexAPI.html
HTTP/1.1 404 Not Found
Server: nginx
Date: Tue, 06 Apr 2021 16:44:34 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 153
Connection: keep-alive



и в логах

==> /var/log/nginx/debug_scorm1.log <==
192.168.162.10 - - [06/Apr/2021:16:44:34 +0000] "GET /storage/scorm/6059b9a9c4f86033515b314e/scormdriver/indexAPI.html HTTP/1.1" 404 153 "-" "curl/7.58.0" "ip" [/srv/app/api_deploy/deploy/v7/2103161054/public]


т.е. попадает в location /storage/scorm {
источник

A

Andrey in nginx_ru
не получилось пока проверить?
источник

k

kiosaku in nginx_ru
минут через 15 гляну
источник

k

kiosaku in nginx_ru
скажи-ка, а файл /srv/storage_data/app/public/scorm/6059b9a9c4f86033515b314e/scormdriver/indexAPI.html он же есть физически?
источник

k

kiosaku in nginx_ru
ибо, сдаётся мне, что причина банальна
источник

k

kiosaku in nginx_ru
днём не стал озвучивать, без проверки
источник

k

kiosaku in nginx_ru
короче, замени
try_files $uri /indexAPI.html;
на
try_files $uri $document_root/indexAPI.html;
либо (в твоём варианте)
try_files $uri ${document_root}indexAPI.html;
источник

k

kiosaku in nginx_ru
но это - при условии, что у тебя будет дополнительно ещё location для /srv/storage_data...
источник

A

Andrey in nginx_ru
файл есть
ls /srv/storage_data/app/public/scorm/6059b9a9c4f86033515b314e/scormdriver/indexAPI.html
/srv/storage_data/app/public/scorm/6059b9a9c4f86033515b314e/scormdriver/indexAPI.html
источник

k

kiosaku in nginx_ru
тогда см. выше
источник