2015-05-03 18 views
10

Właśnie zainstalowałem blog Wordpress w katalogu/blog w aplikacji Rails, działający na Unicorn i Nginx, a moje arkusze stylów i skrypty nie są ładowane poprawnie w przeglądarce, gdy wchodzę na moje strony domain.com/blog. Chrome konsola dając mi następujący błąd:Nginx - blog Wordpress na Railsach ładuje style i skrypty z tekstem typu MIME/html

  • zasobów interpretować jako arkusza stylów, ale przeniesione z typem MIME text/html
  • zasobów interpretować jako Script ale przeniesione z typem MIME text/html

starali aby to zrozumieć i wypróbować wiele rozwiązań tutaj na SO, ale wciąż nie może przejść przez ... wydaje się, że coś musi być zmienione w mojej konfiguracji Nginx, szczególnie w przypadku lokalizacji blogu/php. Oto mój config:

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; 
} 

Odpowiedz

7

Po tonę wyszukiwanie wokół, w końcu znalazłem this solution.

Wygląda na to, że muszę dodać root do aplikacji w "lokalizacji/blogu" i zagnieżdżać "location ~ .php $" wewnątrz/blogu. Oto mój config Nginx, że pracuje teraz dla Wordpress bloga w aplikacji Rails przy użyciu Unicorn, w przypadku gdy ktoś inny musi go:

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; 
} 
6

Sprawdź, czy dyrektywę types zdefiniowany w nginx config.

Syntax:  types { ... } 
Default:  

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

Context: http, server, location 

Rozszerzenia nazw plików z mapami na typy odpowiedzi MIME. Rozszerzenia nie uwzględniają wielkości liter. Kilka rozszerzenia mogą być przypisane do jednego typu, na przykład:

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

Źródło: http://nginx.org/en/docs/http/ngx_http_core_module.html#types

+0

Aby rozwinąć, jeśli pliki JavaScript i CSS załadować grzywny zewnątrz/ścieżki blogu, chciałbym sugeruje przeszukiwanie plików konfiguracyjnych nginx (zarówno podstawowego pliku nginx.conf, jak i dowolnego pliku virtualhost) dla "mime.types" (bez cudzysłowów). Powinieneś mieć włącznik dla tego pliku w konfiguracji najwyższego poziomu (np .: nginx.conf). Brzmi to prawie tak, jakby typy mime zostały w jakiś sposób załadowane warunkowo tylko na zewnątrz/blogu. Nigdy nie widziałem konfiguracji, która powoduje problem, który wyszczególniasz. Twoja "lokalizacja/blog" z dyrektywą try_files jest idealna, powinna normalnie obsługiwać pliki statyczne. –

+0

Dzięki za odpowiedzi - aktualnie mam "include mime.types" w moim pliku nginx.conf i ten plik mime.types ma dyrektywę typów z css/javascript/etc, o której wspomniałeś, Tan. Próbowałem nawet zrobić "include /etc/nginx/mime.types" w tym konkretnym vhostu w lokalizacjach/blog i/php, ale wciąż nie ma szczęścia ... –

+0

Nate - tak, moje style i skrypty ładują się właściwie poza "location/blog", ale każda strona na tym blogu Wordpress z jakiegoś powodu ciągle napotyka ten błąd typu MIME. –

Powiązane problemy