Назад | Перейти на главную страницу

ТИП MIME NGINX

У меня есть файл конфигурации nginx, поэтому, когда мобильное устройство посещает мой сайт, URL-адрес переписывается на m.mysite.com. Я сделал это, добавив следующие

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

Я получил это от http://detectmobilebrowsers.com/ ЭТО РАБОТАЕТ, но ни один из моих файлов изображений / js / css не загружает только HTML. И я знаю, что это фрагмент кода, который я упомянул выше, потому что, когда я удаляю его и захожу на m.mywebsite.com со своего мобильного устройства, все загружается. Таким образом, этот фрагмент кода ЧТО-ТО делает с моими MIME TYPES css / img / js. Я узнал об этом из сообщений об ошибках консоли от сафари с пользовательским агентом, установленным на iphone.

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.

вот мой весь файл конфигурации nginx на всякий случай ...

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

Я мог бы просто обнаружить мобильные браузеры с помощью php или javascript, но мне нужно сделать обнаружение на уровне сервера, чтобы я мог использовать 'm' в m.mywebsite.com в качестве флага в моих контроллерах (codeigniter) для обслуживания правильный взгляд. Я надеюсь, что кто-то может мне помочь! Спасибо!

С какого виртуального хоста вы предоставляете изображения для клиентов, обращающихся к m.mywebsite.com? Если изображения по-прежнему обслуживаются из www.mywebsite.com тогда клиент получит перенаправление для каждого запрашиваемого изображения, которое некоторые браузеры могут обрабатывать некорректно. Если вы используете относительные ссылки для всех изображений, тогда они должны обслуживаться из m.mywebsite.com, в этом случае конфигурация nginx для www.mywebsite.com не должно влиять на него вообще (кроме первоначального перенаправления).