Локальная установка подстановочного знака nginx не загружает файлы JS

Я установил конфигурацию сервера nginx на свой локальный хост. Это мультимагазин PrestaShop 1.6.1.4. Вы можете увидеть конфигурацию nginx прямо здесь:

server {
listen 80;
listen [::]:80;

root /var/www/html/devsite;
index  index.php index.html index.htm;
server_name .devsite.com;

location / {
rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2.jpg last;
rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3.jpg last;
rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg last;
rewrite ^/c/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
rewrite ^/c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1.jpg last;
rewrite ^/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
try_files $uri $uri/ /index.php?$args;        
}

# AlphaImageLoader for IE and fancybox
rewrite ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 last;

# Web service API
rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;

# Installation sandbox
rewrite ^(/install(?:-dev)?/sandbox)/(.*) /$1/test.php last;

#Change this block to your admin folder
location /admin {
    if (!-e $request_filename) {
        rewrite ^/.*$ /admin/index.php last;
    }
}

# Source code directories
location ~ ^/(app|bin|cache|classes|config|controllers|docs|localization|override|src|tests|tools|translations|travis-scripts|vendor|var)/ {
    deny all;
}
# Prevent exposing other sensitive files
location ~ \.(yml|log|tpl|twig|sass)$ {
    deny all;
}

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

}

Я пришел к выводу, что это какая-то недостающая конфигурация с конфигурацией Nginx Wildcard, но я могу ошибаться, я быстро объясню, что вижу:

Страница загружается нормально, администратор работает нормально, но есть шаблон, который не загружает соответствующий JS, который позволяет клиенту выбирать продукт.

Я проверил сетевой отладчик инспектора и вижу, что файл правильно загружается в производственной среде, тогда как он не загружается, как в среде локального хоста...

Спасибо за помощь.


person Raül    schedule 21.12.2020    source источник
comment
Кажется, не хватает какой-то ключевой информации. doesn't load the respective JS - что это значит? 404? Какой URI проблемного JS? Я не вижу в конфигурации nginx ничего, что явно обрабатывает JS? Или это просто статический ресурс где-то под devsite/? Другими словами, что заставляет вас подозревать, что проблема в конфигурации nginx?   -  person Don't Panic    schedule 28.12.2020


Ответы (1)


Вещи, которые вы можете проверить, которые сработали для меня, по крайней мере, один раз в прошлом:

  • Проверьте разрешения в локальной среде, т.е. используйте

    namei -nom path/to/jsfile 
    

чтобы убедиться, что путь к ресурсу доступен и права собственности (используйте chmod и chown для внесения соответствующих изменений)

  • Проверьте разрешения самого файла (возможно, приложение или процесс перезаписывает каждый раз, когда вы запускаете службу, разрешения js и файла сбрасываются)

  • Убедитесь, что ваш производственный экземпляр на самом деле не обслуживает файл js, но кэширует ли он его из предыдущего состояния. Установите, возможно, кнопку очистки кеша / надстройку или что-то, что позволит вам деактивировать кеш. Некоторые браузеры имеют эту функцию.

  • В зависимости от вашей среды разработки (это Django или что-то еще?) может случиться так, что обслуживание статических файлов в среде разработки и в рабочей среде может отличаться по дизайну.

  • Проверьте, действительно ли код, который у вас есть в среде разработки и в рабочей среде, одинаков!

  • Остановите рабочую среду (если это не остановит какой-либо реальный сервис и не побеспокоит ваших клиентов) и перезапустите ее. Вы испытываете ту же проблему?

  • Еще раз проверьте, просматривают ли и prod, и dev один и тот же файл конфигурации nginx. Перезапустите nginx и перезагрузите конфиг

  • Попробуйте удалить из конфигурации dev nginx сложные операторы регулярных выражений и проверьте, можно ли обслуживать файл js.

  • Проверьте расположение статических файлов dev и prod и убедитесь, что они указаны правильно в вашей конфигурации.

Как только я вспомню что-то дополнительное, я опубликую это здесь. Удачи!

person pebox11    schedule 26.12.2020