Nginx - блог Wordpress на Rails загружает стили и скрипты с типом mime text/html

Я только что установил блог Wordpress в каталоге /blog в приложении Rails, работающем в Unicorn и Nginx, и мои таблицы стилей и сценарии не загружаются должным образом в браузере, когда я перехожу на мои страницы domain.com/blog, Консоль Chrome дает мне следующую ошибку:

  • Ресурс интерпретируется как таблица стилей, но переносится с текстом типа MIME/html
  • Ресурс интерпретируется как Script, но передается с текстом типа MIME/html

Попытались понять это и опробовали множество решений здесь, на SO, но до сих пор не могут пройти... похоже, что в моей конфигурации Nginx должно быть что-то изменилось, особенно для местоположения блога /php, Здесь моя конфигурация:

upstream unicorn {
  server unix:/tmp/unicorn.domain.sock fail_timeout=0;
}

server {
  server_name www.domain.com;
  return 301 $scheme://domain.com$request_uri;
}

server {
  listen 80 default deferred;
  server_name domain.com;
  root /home/dcs/htdocs/domain/current/public;

  access_log /home/dcs/htdocs/domain/log/access.log;
  error_log  /home/dcs/htdocs/domain/log/error.log;


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

  location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php-fpm.sock;

    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME home/dcs/htdocs/domain/$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
  }


  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 504 /500.html;
  keepalive_timeout 10;
}

Ответ 1

После тонны поиска, я наконец нашел это решение.

Похоже, проблема заключалась в том, что мне нужно было добавить root в приложение в "location/blog" и вложить "location ~.php $" в /blog. Здесь моя конфигурация Nginx, работающая сейчас для блога Wordpress в приложении Rails с использованием Unicorn, на тот случай, если кому-то это понадобится:

upstream unicorn {
  server unix:/tmp/unicorn.domain.sock fail_timeout=0;
}

server {
  server_name www.domain.com;
  return 301 $scheme://domain.com$request_uri;
}

server {
  listen 80 default deferred;
  server_name domain.com;
  root /home/dcs/htdocs/domain/current/public;

  access_log /home/dcs/htdocs/domain/log/access.log;
  error_log  /home/dcs/htdocs/domain/log/error.log;

  location /blog {
    root /home/dcs/htdocs/domain;
    index index.php;

    location ~ \.php$ {
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/var/run/php-fpm.sock;

      fastcgi_index index.php;
      fastcgi_param  SCRIPT_FILENAME home/dcs/htdocs/domain/$fastcgi_script_name;
      include /etc/nginx/fastcgi_params;
    }
  }

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 504 /500.html;
  keepalive_timeout 10;
}

Ответ 2

Убедитесь, что у вас есть директива types, определенная в вашей конфигурации nginx.

Syntax:     types { ... }
Default:    

types {
    text/html  html;
    image/gif  gif;
    image/jpeg jpg;
}

Context:    http, server, location

Расширения имени файла карты для MIME-типов ответов. Расширения не чувствительны к регистру. Несколько расширений могут быть сопоставлены одному типу, например:

types {
    text/css                     css;
    application/javascript       js;
    application/json             json;
}

Источник: http://nginx.org/en/docs/http/ngx_http_core_module.html#types