Установка Magento 2: css не загружается

После уставноки Magento 2 на мой локальный nginx сервер, сайт не работал. Там не хватало картинок, CSS и JS файлов.

Magento 2 css не работает

Причина в том, что правильные настройки nginx не используются.

По умолчанию Magento 2 идет с конфигурационным файлом к nginx и вы можете его найти в папке с magento2: magento2/nginx.conf.sample

magento2/nginx.conf.sample

# Magento Vars
# set $MAGE_ROOT /path/to/magento/root;
# set $MAGE_MODE default; # or production or developer
#
# Example configuration:
# upstream fastcgi_backend {
# # use tcp connection
# # server 127.0.0.1:9000;
# # or socket
# server unix:/var/run/php5-fpm.sock;
# }
# server {
# listen 80;
# server_name mage.dev;
# set $MAGE_ROOT /var/www/magento2;
# set $MAGE_MODE developer;
# include /vagrant/magento2/nginx.conf.sample;
# }

root $MAGE_ROOT/pub;

index index.php;
autoindex off;
charset off;

add_header ‘X-Content-Type-Options’ ‘nosniff’;
add_header ‘X-XSS-Protection’ ‘1; mode=block’;

location /setup {
root $MAGE_ROOT;
location ~ ^/setup/index.php {
fastcgi_pass fastcgi_backend;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ ^/setup/(?!pub/). {
deny all;
}

location ~ ^/setup/pub/ {
add_header X-Frame-Options «SAMEORIGIN»;
}
}

location /update {
root $MAGE_ROOT;

location ~ ^/update/index.php {
fastcgi_split_path_info ^(/update/index.php)(/.+)$;
fastcgi_pass fastcgi_backend;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}

# deny everything but index.php
location ~ ^/update/(?!pub/). {
deny all;
}

location ~ ^/update/pub/ {
add_header X-Frame-Options «SAMEORIGIN»;
}
}

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

location /pub {
location ~ ^/pub/media/(downloadable|customer|import|theme_customization/.*\.xml) {
deny all;
}
alias $MAGE_ROOT/pub;
add_header X-Frame-Options «SAMEORIGIN»;
}

location /static/ {
if ($MAGE_MODE = «production») {
expires max;
}
location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
add_header Cache-Control «public»;
add_header X-Frame-Options «SAMEORIGIN»;
expires +1y;

if (!-f $request_filename) {
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
}
}
location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
add_header Cache-Control «no-store»;
add_header X-Frame-Options «SAMEORIGIN»;
expires off;

if (!-f $request_filename) {
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
}
}
if (!-f $request_filename) {
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
}
add_header X-Frame-Options «SAMEORIGIN»;
}

location /media/ {
try_files $uri $uri/ /get.php?$args;

location ~ ^/media/theme_customization/.*\.xml {
deny all;
}

location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
add_header Cache-Control «public»;
add_header X-Frame-Options «SAMEORIGIN»;
expires +1y;
try_files $uri $uri/ /get.php?$args;
}
location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
add_header Cache-Control «no-store»;
add_header X-Frame-Options «SAMEORIGIN»;
expires off;
try_files $uri $uri/ /get.php?$args;
}
add_header X-Frame-Options «SAMEORIGIN»;
}

location /media/customer/ {
deny all;
}

location /media/downloadable/ {
deny all;
}

location /media/import/ {
deny all;
}

location ~ cron\.php {
deny all;
}

location ~ (index|get|static|report|404|503)\.php$ {
try_files $uri =404;
fastcgi_pass fastcgi_backend;

fastcgi_param PHP_FLAG «session.auto_start=off \n suhosin.session.cryptua=off»;
fastcgi_param PHP_VALUE «memory_limit=256M \n max_execution_time=600»;
fastcgi_read_timeout 600s;
fastcgi_connect_timeout 600s;
fastcgi_param MAGE_MODE $MAGE_MODE;

fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

[свернуть]

Для решения данной проблемы вы можете просто переименовать данный файл в nginx.conf и создать magento2.conf в папке с nginx настройками:

upstream fastcgi_backend {
    server  127.0.0.1:9001;
}

server {
    listen 80;
    server_name magento2.loc;
    set $MAGE_ROOT /path/to/magento2;
    set $MAGE_MODE developer;
    include /path/to/magento2/nginx.conf;
}

Статья на аглийском: http://wdevelop.com/magento-2-installation-css-not-loading/

Установка Magento 2: css не загружается: 5 комментариев

  1. Сергей

    Что значит просто переименовать, Вы накурились что ли писать такие рекомендации ?
    А что с остальными доменами делать ?
    Написали бы что нужно перенести в конф файл или как подключить безболезненно этот.
    Короче желаю Вам таких же гайдов. Как заменить ступицу колеса? Все просто, купи новую машину.

    1. admin Автор записи

      Сергей,
      а при чем тут другие домены?
      Переименование magento2/nginx.conf.sample в magento2/nginx.conf и создание path/to/nginx/sites-enabled/magento2.conf не изменяет других локальных сайтов.

      Все nginx конфиги для других доменов будут расположены в соответствующих path/to/nginx/sites-enabled/-other-site-.conf файлах

    1. admin Автор записи

      path/to/nginx — это путь к вашей nginx конфигурации и он меняется в зависимости от окружения

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *