Nginx

用於 css js 文件的 Nginx 404

  • October 30, 2016

我無法在我的 MAC 上傳入 css 和 js 文件。這些文件我得到 404。在 nginx.conf 中的 Ubuntu 上,我只在最後添加rewrite ^/assets/([a-z\-]+)-([a-z0-9]+).(css|js) /assets/$1.$3;它就可以了。

但我不知道把它放在 osx 上的什麼地方,因為當我像在 Ubuntu 上那樣寫它時,我得到了語法錯誤……

我的 nginx 配置文件如下所示:

worker_processes  auto;

pid        logs/nginx.pid;

events {
   worker_connections  1024;
}


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


   access_log  logs/access.log;
   error_log  logs/error.log;
   sendfile        on;
   keepalive_timeout  65;


   server {
       listen       80;
       server_name  default;

       location / {
           root   html;
           index  index.html index.htm;

       }

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

   }


       # HTTPS server
       server {
               server_name     local.beer.co.uk;
               listen  80;
               return  301     https://$host$request_uri;
       }

  server {
   listen                     443 ssl;
   server_name                local.beer.co.uk local.beer.telegraph.co.uk;

   ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
   ssl_certificate            /usr/local/etc/nginx/cert.pem;
   ssl_certificate_key        /usr/local/etc/nginx/cert.key;

   gzip_disable "msie6";
   gzip_types text/plain application/xml application/x-javascript text/css application/json text/javascript;

   access_log  /usr/local/var/log/nginx/access.log;
   error_log   /usr/local/var/log/nginx/error.log debug;
   log_not_found off;
   root    /Users/RobDee/workspace/beer;

   location /.htpasswd
   {
       return 403;
   }
   location ~ \.css {
       root /Users/RobDee/workspace/beer/web;
       expires max;
   }

   location ~* \.(jpg|jpeg|png|gif|ico|js|woff|woff2|ttf)$ {
       root /Users/RobDee/workspace/beer/web;
       access_log off;
       expires max;
   }

   location ~* \.(js|css)$ {
       expires 1y;
       log_not_found off;

   }

   location /
   {
       root /Users/RobDee/workspace/beer/web;
       try_files $uri $uri/ /app_dev.php$is_args$args;
        index app_dev.php;
   }

   location ~ \.php$ {
       root /Users/RobDee/workspace/beer/web;
       fastcgi_pass   127.0.0.1:9003;
       fastcgi_index  app_dev.php;
       fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include        fastcgi_params;
   }
   }
   include servers/*;

   }

重寫指令只能在伺服器、位置或“if”塊的上下文中使用。例如,它不能在“http”塊中使用。您必須在事件塊或 http 塊(與其他伺服器塊一起)中使用它。請查看我在哪裡使用了重寫指令。

worker_processes  auto;

pid        logs/nginx.pid;

events {
worker_connections  1024;

}


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


   access_log  logs/access.log;
   error_log  logs/error.log;
   sendfile        on;
   keepalive_timeout  65;


   server {
       listen       80;
       server_name  default;

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

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


   # HTTPS server
   server {
       server_name     local.beer.co.uk;
       listen  80;
       return  301     https://$host$request_uri;
   }

   server {
       listen                     443 ssl;
       server_name                local.beer.co.uk local.beer.telegraph.co.uk;

       ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
       ssl_certificate            /usr/local/etc/nginx/cert.pem;
       ssl_certificate_key        /usr/local/etc/nginx/cert.key;

       gzip_disable "msie6";
       gzip_types text/plain application/xml application/x-javascript text/css application/json text/javascript;

       access_log  /usr/local/var/log/nginx/access.log;
       error_log   /usr/local/var/log/nginx/error.log debug;
       log_not_found off;
       root    /Users/RobDee/workspace/beer;

       location /.htpasswd
       {
           return 403;
       }
       location ~ \.css {
           root /Users/RobDee/workspace/beer/web;
           expires max;
       }

       location ~* \.(jpg|jpeg|png|gif|ico|js|woff|woff2|ttf)$ {
           root /Users/RobDee/workspace/beer/web;
           access_log off;
           expires max;
       }

       location ~* \.(js|css)$ {
           expires 1y;
           log_not_found off;
       }

       location /
       {
           root /Users/RobDee/workspace/beer/web;
           try_files $uri $uri/ /app_dev.php$is_args$args;
           index app_dev.php;
       }

       location ~ \.php$ {
           root /Users/RobDee/workspace/beer/web;
           fastcgi_pass   127.0.0.1:9003;
           fastcgi_index  app_dev.php;
           fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
           include        fastcgi_params;
       }

       rewrite ^/assets/([a-z\-]+)-([a-z0-9]+).(css|js) /assets/$1.$3;

   }

   include servers/*;
}

引用自:https://serverfault.com/questions/811858