2015-05-03 11 views
10

Ho appena installato un blog Wordpress in una directory/blog all'interno di un'applicazione Rails, in esecuzione su Unicorn e Nginx, ed i miei fogli di stile e script non vengono caricato correttamente nel browser quando vado alle mie pagine domain.com/blog. Chrome console mi dà il seguente errore:Nginx - blog Wordpress on Rails carichi stili e script con il tipo MIME text/html

  • Risorsa interpretato come foglio di stile, ma trasferito con il tipo MIME text/html
  • Risorsa interpretato come script, ma trasferiti con il tipo MIME text/html

hanno cercato per capirlo e provato un sacco di soluzioni qui su SO, ma ancora non può ottenere attraverso ... sembra ci deve essere qualcosa è cambiato sulla mia configurazione Nginx, in particolare per la posizione blog/php. Ecco la mia configurazione:

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

risposta

7

Dopo una tonnellata di ricerca in giro, ho finalmente trovato this solution.

sembra che il problema era che avevo bisogno di aggiungere una radice per l'applicazione all'interno di "posizione/blog" e il nido "posizione ~ .php $" dentro/blog. Ecco la mia configurazione Nginx che sta lavorando ora per un blog Wordpress in un'applicazione Rails utilizzando Unicorno, nel caso in cui qualcun altro ne ha bisogno:

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

Assicurarsi di avere una direttiva types definito nella configurazione nginx.

Syntax:  types { ... } 
Default:  

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

Context: http, server, location 

Estensioni nome file di Maps a tipi di risposte MIME. Le estensioni sono case-insensitive. Diverse le estensioni possono essere mappati a un tipo, per esempio:

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

Fonte: http://nginx.org/en/docs/http/ngx_http_core_module.html#types

+0

Per espandere, se i javascript e file css carico multa al di fuori di/percorso blog, lo farei suggerire la ricerca dei file di configurazione nginx (sia nginx.conf primaria e tutti i file VirtualHost) per "mime.types" (senza virgolette). Dovresti avere un include per questo file nella configurazione di alto livello (es: nginx.conf). Sembra quasi che i tipi di mimo siano in qualche modo caricati condizionatamente solo all'esterno/blog. Non ho mai visto una configurazione che causa il problema che stai descrivendo. La tua "posizione/blog" con la direttiva try_files è perfetta, dovrebbe servire normalmente file statici. –

+0

Grazie per le risposte - ho attualmente "includono mime.types" nel mio nginx.conf e quel file mime.types ha direttiva i tipi con i CSS/JavaScript/etc, che lei ha citato, Tan. Ho anche provato a fare "includere /etc/nginx/mime.types" in quel particolare vhost all'interno delle sedi/blog e/php, ma ancora fortuna ... –

+0

Nate - sì, i miei stili e script sono tutti caricano correttamente al di fuori di "location/blog", ma qualsiasi pagina in questo blog Wordpress continua a funzionare con questo errore di tipo mime per qualche motivo. –