nginx mime type problem

hey guys I decided to add the code below to my nginx conf file so that all request from mobile devices are under the m.domain.com url. However After I added the code and visited my site with a mobile device, none of the css,js,jpg files were loading.

code added to nginx conf file

        #--------------- For Mobile Devices ----------------#
        set $mobile_rewrite do_not_perform;

        if ($http_user_agent ~* "android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino") {
          set $mobile_rewrite perform;
        }

        if ($http_user_agent ~* "^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-)") {
          set $mobile_rewrite perform;
        }

        if ($mobile_rewrite = perform) {
          rewrite ^ http://m.mywebsite.com redirect;
          #rewrite ^(.*)$ $scheme://mywebsite.com/mobile/$1;
          #return 301 http://m.mywebsite.com;
          #break;
        }
        #---------------------------------------------------#

And this is the full conf file

worker_processes  1;

events 
{
    worker_connections  1024;
}

http 
{
    include       mime.types;
    include       /etc/nginx/conf/fastcgi.conf;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    #server1
    server {

        listen       80;
        server_name  mywebsite.com www.mywebsite.com ;

        index  index.html index.htm index.php;
        root   /srv/http/mywebsite.com/public;

        access_log /srv/http/mywebsite.com/logs/access.log;
        error_log /srv/http/mywebsite.com/logs/error.log; 

        #---------------- For CodeIgniter ----------------#
          # canonicalize codeigniter url end points
        # if your default controller is something other than "welcome" you should change the following
        if ($request_uri ~* ^(/main(/index)?|/index(.php)?)/?$)
        {
            rewrite ^(.*)$ / permanent;
          }

        # removes trailing "index" from all controllers
        if ($request_uri ~* index/?$)
        {
            rewrite ^/(.*)/index/?$ /$1 permanent;
        }

        # removes trailing slashes (prevents SEO duplicate content issues)
        if (!-d $request_filename)
        {
            rewrite ^/(.+)/$ /$1 permanent;
          }

            # unless the request is for a valid file (image, js, css, etc.), send to bootstrap
            if (!-e $request_filename)
           {
                rewrite ^/(.*)$ /index.php?/$1 last;
             break;
        }
        #---------------------------------------------------#

        #--------------- For Mobile Devices ----------------#
        set $mobile_rewrite do_not_perform;

        if ($http_user_agent ~* "android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino") {
          set $mobile_rewrite perform;
        }

        if ($http_user_agent ~* "^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-)") {
          set $mobile_rewrite perform;
        }

        if ($mobile_rewrite = perform) {
          rewrite ^ http://m.mywebsite.com redirect;
          #rewrite ^(.*)$ $scheme://mywebsite.com/mobile/$1;
          #return 301 http://m.mywebsite.com;
          #break;
        }
        #---------------------------------------------------#
        location / 
        {
            index  index.html index.htm index.php;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html 
        {
            root   html;
        }

        location ~ \.php$ 
        {
               try_files $uri =404;
               fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_script_name;
               include /etc/nginx/conf/fastcgi_params;
        }

    }#sever1

    #server 2
    server {

        listen       80;
        server_name  m.mywebsite.com;

        index  index.html index.htm index.php;
        root   /srv/http/mywebsite.com/public;

        access_log /srv/http/mywebsite.com/logs/access.log;
        error_log /srv/http/mywebsite.com/logs/error.log; 

        #---------------- For CodeIgniter ----------------#
          # canonicalize codeigniter url end points
        # if your default controller is something other than "welcome" you should change the following
        if ($request_uri ~* ^(/main(/index)?|/index(.php)?)/?$)
        {
            rewrite ^(.*)$ / permanent;
          }

        # removes trailing "index" from all controllers
        if ($request_uri ~* index/?$)
        {
            rewrite ^/(.*)/index/?$ /$1 permanent;
        }

        # removes trailing slashes (prevents SEO duplicate content issues)
        if (!-d $request_filename)
        {
            rewrite ^/(.+)/$ /$1 permanent;
          }

            # unless the request is for a valid file (image, js, css, etc.), send to bootstrap
            if (!-e $request_filename)
           {
                rewrite ^/(.*)$ /index.php?/$1 last;
             break;
        }
        #---------------------------------------------------#

        location / 
        {
            index  index.html index.htm index.php;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html 
        {
            root   html;
        }

        location ~ \.php$ 
        {
               try_files $uri =404;
               fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_script_name;
               include /etc/nginx/conf/fastcgi_params;
        }

    }#sever2

    }#http

I fired up safari with the iphone useragent to do some debugging and found this to be the cause of my problems.

text.cssResource interpreted as stylesheet but transferred with MIME type text/html.
960_16_col.cssResource interpreted as stylesheet but transferred with MIME type text/html.
design.cssResource interpreted as stylesheet but transferred with MIME type text/html.
navigation_menu.cssResource interpreted as stylesheet but transferred with MIME type text/html.
reset.cssResource interpreted as stylesheet but transferred with MIME type text/html.
slide_down_panel.cssResource interpreted as stylesheet but transferred with MIME type text/html.
myrealtorpage_view.cssResource interpreted as stylesheet but transferred with MIME type text/html.
head.jsResource interpreted as script but transferred with MIME type text/html.
head.js:1SyntaxError: Parse error
isaac:208ReferenceError: Can't find variable: head
mrp_home_icon.pngResource interpreted as image but transferred with MIME type text/html.
M_1_L_289_I_499_default_thumb.jpgResource interpreted as image but transferred with MIME type text/html.
M_1_L_290_I_500_default_thumb.jpgResource interpreted as image but transferred with MIME type text/html.
M_1_default.jpgResource interpreted as image but transferred with MIME type text/html.
default_listing_image.pngResource interpreted as image but transferred with MIME type text/html.

If I remove the chunk of code inbetween

#--------------- For Mobile Devices ----------------#
#---------------------------------------------------#

everything loads up right; so the problem lies in there. does anyone know how I can fix this? has anyone encountered a similar situation?

1 Reply

It looks like it's just doing a naive redirect of http://example.com/ url="">> to http://m.example.com. If you're referring to your static assets with full URLs (http://example.com/whatever/blah.css), they will get redirected to http://m.example.com/ as well.

Pick one:

1) rewrite ^ http://m.example.com$request_uri;

2) Make sure you don't refer to your static assets as http://example.com/whatever/foo.css when you instead mean http://m.example.com/whatever/foo.css or /whatever/foo.css

3) Skip the m.* redirect silliness and move template selection to your application without having separate URLs. This will make those of us who like to share links with our friends much happier.

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct