css - Nginx सीएसएस फ़ाइलों को लोड करने में विफल रहता है




mime (6)

मैंने हाल ही में Apache2 से Nginx में स्विच करने का निर्णय लिया है। मैंने अपने CentOS सर्वर पर Nginx स्थापित किया और एक बुनियादी विन्यास स्थापित किया। जब मैंने ब्राउज़र में अपनी साइट लोड करने का प्रयास किया (एफएफ / क्रोम) मैंने देखा कि सीएसएस फ़ाइल लोड नहीं है। मैंने त्रुटि कंसोल की जांच की और यह संदेश देखा:

Error: The stylesheet http://example.com/style.css was not loaded because its MIME type, "text/html", is not "text/css".

मैंने Nginx कॉन्फ़िगरेशन की जांच की और सबकुछ ठीक लगता है:

http {
    include /etc/nginx/mime.types;
    ..........
}

Css फ़ाइलों के लिए माइम प्रकार सही ढंग से /etc/nginx/mime.types में सेट है।

text/css css;

सब कुछ अच्छी तरह से कॉन्फ़िगर किया गया प्रतीत होता है लेकिन मेरी सीएसएस फ़ाइलें अभी भी लोड नहीं हैं। मुझे कोई स्पष्टीकरण नहीं है।

उल्लेख करने लायक एक और बात। शुरुआत में मैंने एपेल रिपॉजिटरीज़ का उपयोग करके निजिनक्स स्थापित किया और मुझे पुराना संस्करण मिला: 0.8 ... यह मुझे दिखाई दिया कि मेरी समस्या उस संस्करण में एक बग थी इसलिए मैंने 0.8 संस्करण को अनइंस्टॉल किया, यम में nginx रिपोजिटरी जोड़ा और फिर नवीनतम संस्करण स्थापित किया: 1.0। 14। मैंने सोचा कि नया संस्करण मेरी समस्या का समाधान करेगा, लेकिन दुर्भाग्य से ऐसा नहीं हुआ कि मैं विचारों से बाहर हो रहा हूं।

मैं किसी भी मदद की सराहना करता हूं।

विन्यास फाइलें:

/etc/nginx/nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

/etc/nginx/conf.d/default.conf

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
         root    /usr/share/nginx/html;
         index  index.html index.htm index.php;
         fastcgi_pass   127.0.0.1:9000;
         fastcgi_index  index.php;
         fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
         include        fastcgi_params;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

/etc/nginx/mime.types

types {
    text/html                             html htm shtml;
    text/css                              css;
    text/xml                              xml;
    image/gif                             gif;
    image/jpeg                            jpeg jpg;
    application/x-javascript              js;
    application/atom+xml                  atom;
    application/rss+xml                   rss;
    ..........................................
    other types here
    ..........................................
}

इसे अपनी ngnix conf फ़ाइल में जोड़ें

add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://assets.zendesk.com; font-src 'self' https://themes.googleusercontent.com; frame-src https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'";

मुझे विंडोज़ में एक ही समस्या थी। मैंने इसे जोड़ने का हल किया: mime.types शामिल करें; http { my nginx.conf फ़ाइल में। फिर भी यह काम नहीं किया .. इसलिए मैंने error.log फ़ाइल को देखा और मैंने देखा कि यह फ़ाइल पथ से .css और जावास्क्रिप्ट फ़ाइलों को चार्ज करने का प्रयास कर रहा था लेकिन बीच में एक / http फ़ोल्डर के साथ। पूर्व: मेरा। सीएसएस इस प्रकार था: "सी: \ उपयोगकर्ता \ पीसी \ दस्तावेज़ \ nginx-server / प्लेयर-वेब / सीएसएस / index.css" और यह इसे से ले रहा था: "सी: \ उपयोगकर्ता \ पीसी \ दस्तावेज़ \ nginx -सेवर / एचटीएमएल /player-web/css/index.css "तो मैंने अपने प्लेयर-वेब फ़ोल्डर को एक HTML फ़ोल्डर के अंदर बदल दिया और यह काम किया;)


मैं भी इस मुद्दे में भाग गया। यह मुझे तब तक भ्रमित कर दिया जब तक मुझे एहसास हुआ कि क्या गलत था:

आपके पास यह है:

include       /etc/nginx/mime.types;
default_type  application/octet-stream;

आप यह चाहते हैं:

default_type  application/octet-stream;
include       /etc/nginx/mime.types;

ऐसा लगता है कि या तो nginx में एक बग या दस्तावेज़ों में कमी (यह इरादा व्यवहार हो सकता है, लेकिन यह विषम है)


मैंने बाकी उत्तरों से कुछ सुझावों का पालन किया और पाया कि इन विषम कार्रवाइयों ने मदद की (कम से कम मेरे मामले में)।

1) मैंने सर्वर को निम्नलिखित ब्लॉक में जोड़ा है:

location ~ \.css {
 add_header Content-Type text/css;
}

मैंने nginx को पुनः लोड किया और इसे error.log में मिला:

2015/06/18 11:32:29 [त्रुटि] 3430 # 3430: * 16 9 खुला () "/etc/nginx/html/css/mysite.css" असफल रहा (2: ऐसी कोई फ़ाइल या निर्देशिका नहीं)

2) मैंने पंक्तियों को हटा दिया, nginx पुनः लोड किया और काम सीएसएस मिल गया। मैं समझ नहीं सकता कि क्या खुशी है क्योंकि मेरी conf फ़ाइल पहले जैसी हो गई थी।

मेरा मामला वर्चुअलबॉक्स, nginx / 1.9.2 पर एक पंक्ति 127.51.1.1 mysite / etc / hosts पर सुंदर xubuntu 14.04 था और सर्वर ब्लॉक के साथ सुंदर सरल /etc/nginx/nginx.conf था:

user nginx;
worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include /etc/nginx/mime.types;

    server {
        listen 80;
        server_name mysite;

        location / {
            root /home/testuser/dev/mysite/;
        }
    }
}

include /etc/nginx/mime.types; को include /etc/nginx/mime.types; location / { तहत location / { http { के तहत की बजाय http { मेरे लिए समस्या हल हो गई।


style.css वास्तव में आपके "स्थान /" निर्देश के कारण fastcgi के माध्यम से प्रक्रिया हो रही है। तो यह फास्टसीजी है जो फ़ाइल ( nginx > fastcgi > filesystem ) की सेवा कर रहा है, न कि फाइल सिस्टम सीधे ( nginx > filesystem )।

किसी कारण से मुझे अभी तक पता लगाना नहीं है (मुझे यकीन है कि कहीं कोई निर्देश है), एनजीआईएनएक्स फास्टसी से सेवा की जा रही किसी भी चीज के लिए माइम टाइप text/html लागू करता है, जब तक बैकएंड एप्लिकेशन स्पष्ट रूप से अन्यथा कहता है।

अपराधी यह विन्यास ब्लॉक विशेष रूप से है:

location / {
     root    /usr/share/nginx/html;
     index  index.html index.htm index.php;
     fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
     fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
     include        fastcgi_params;
}

यह होना चाहिए:

location ~ \.php$ { # this line
     root    /usr/share/nginx/html;
     index  index.html index.htm index.php;
     fastcgi_split_path_info ^(.+\.php)(/.+)$; #this line
     fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; # update this too
     include        fastcgi_params;
}

यह परिवर्तन सुनिश्चित करता है कि fastcgi से केवल *.php फ़ाइलों का अनुरोध किया जाए। इस बिंदु पर, एनजीआईएनएक्स सही एमआईएम प्रकार लागू करेगा। यदि आपके पास कोई यूआरएल पुनर्लेखन हो रहा है, तो आपको इसे स्थान निर्देश ( location ~\.php$ ) से पहले संभालना होगा ताकि सही एक्सटेंशन व्युत्पन्न हो और ठीक से fastcgi पर जा सके।

try_files का उपयोग करके अतिरिक्त सुरक्षा विचारों के संबंध में इस आलेख को देखना सुनिश्चित करें। सुरक्षा के प्रभावों को देखते हुए, मैं इसे एक विशेषता मानता हूं, न कि एक बग।







mime