Nginx
NGINX - 無法為重定向的 .js 文件設置記憶體控制(使用別名 + 重寫)
我已經成功設置了一個同時使用別名 + 重寫的 nginx 伺服器,如下面的配置所示。除了 javascript 文件不是強制的瀏覽器記憶體之外,一切正常。
- 伺服器網址:http://localhost/
- 伺服器根目錄:/space1/www
- 一個名為“builder”的別名,其根目錄為:/space1/builder
- 在 /space1/builder/apps/luoicongtrinh/admin 中有一個名為“luoicongtrinh”的網路應用程序
- 此應用的靜態資源路徑被重寫,例如: http://localhost/builder/apps/luoicongtrinh/ admin /js/main.js 將從以下位置提供服務: /space1/builder/apps/luoicongtrinh/ public /js /main.js
- 我想為此文件設置記憶體控制但仍然不成功
目前工作配置(沒有記憶體控制)
server { listen 80; server_name localhost; root /space1/www; index index.html index.htm index.php; access_log /var/log/nginx/access.log debug; location / { server_tokens off; client_max_body_size 20m; client_body_buffer_size 128k; } location ~ /\. { access_log off; log_not_found off; deny all; } # builder location /builder { alias /space1/builder; # luoicongtrinh rewrite ^/builder/apps/luoicongtrinh/(css|images|js|fonts|lib|uploads)/(.+)$ /builder/apps/luoicongtrinh/public/$1/$2 last; rewrite ^/builder/apps/luoicongtrinh/admin/(css|images|js|fonts|lib|uploads)/(.+)$ /builder/apps/luoicongtrinh/public/$1/$2 last; rewrite ^/builder/apps/luoicongtrinh/admin/?(.*)$ /builder/apps/luoicongtrinh/admin/index.php?p=$1&$args last; fastcgi_split_path_info ^/builder/(.+\.php)(.*)$; include /etc/nginx/php_fastcgi; } # Default PHP support include /etc/nginx/php_fastcgi; }
我嘗試添加以下塊來強制瀏覽器記憶體靜態文件(例如:http://localhost/builder/apps/luoicongtrinh/admin/js/main.js),但這不起作用。
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { expires 30d; add_header Pragma public; add_header Cache-Control "public"; try_files $uri =404; }
我也嘗試了各種配置,但仍然不成功。
請指導我如何正確設置。非常感謝!!!
更新: 我嘗試過使用“if”塊,這很有效。
# builder location /builder { alias /space1/builder; # cache control for static resources if ($uri ~* "/(css|images|js|fonts|lib|uploads)/") { expires 30d; add_header Pragma public; add_header Cache-Control "public"; } # luoicongtrinh rewrite ^/builder/apps/luoicongtrinh/(css|images|js|fonts|lib|uploads)/(.+)$ /builder/apps/luoicongtrinh/public/$1/$2 last; rewrite ^/builder/apps/luoicongtrinh/admin/(css|images|js|fonts|lib|uploads)/(.+)$ /builder/apps/luoicongtrinh/public/$1/$2 last; rewrite ^/builder/apps/luoicongtrinh/admin/?(.*)$ /builder/apps/luoicongtrinh/admin/index.php?p=$1&$args last; fastcgi_split_path_info ^/builder/(.+\.php)(.*)$; include /etc/nginx/php_fastcgi; }
我讀過使用“如果”是“邪惡”。您知道如何以另一種方式製定上述“if”塊嗎?
add_header 是名為“headers more”的第三方模組的一部分,您要麼需要從原始碼建構 nginx,要麼確保您的儲存庫已經為您完成了它。
要從原始碼建構 nginx,請閱讀我編寫的本教程 - 它非常快速和簡單。
檢查模組是否工作的方法是執行
nginx -V
添加看看這是否在輸出中
--add-module=../headers-more-nginx-module-0.29
另一種方法是將簡單的 add_header 添加到主位置塊。add_header 也是一個很好的調試工具。
作為參考,這是我如何進行 Nginx 建構的。請注意,在上面的教程中有一個更優化的配置命令版本,但是這個更兼容並且可能更安全
cd /home/ec2-user mkdir nginx-build cd nginx-build service nginx stop yum groupinstall "Development Tools" yum install pcre-devel zlib-devel openssl-devel wget http://nginx.org/download/nginx-1.9.11.tar.gz wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz wget https://github.com/openresty/headers-more-nginx-module/archive/v0.29.tar.gz tar -xzf nginx-1.9.11.tar.gz tar -xzf ngx_cache_purge-2.3.tar.gz tar -xzf v0.29.tar.gz # headers-more # Note that I have no idea what the next line does but it was in the official guide PS_NGX_EXTRA_FLAGS="--with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc" # Safe option, slower, lots of modules included ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --add-module=/tmp/ngx_cache_purge-2.3 --add-module=/tmp/headers-more-nginx-module-0.29 --with-http_realip_module --add-modeule=../ngx_pagespeed-release-1.9.32.10-beta make && make install make clean (NB: optional) service nginx start
然後為您的靜態資源記憶體嘗試這種塊。請注意,那裡沒有 try_files。
location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ { log_not_found off; access_log off; add_header Cache-Control "public, max-age=691200, s-maxage=691200"; more_clear_headers "Pragma"; more_clear_headers "Expires"; }