ubuntu中已通过apt安装的nginx添加新模块(http_gzip_static_module)静态压缩

ubuntu中已通过apt安装的nginx添加新模块(http_gzip_static_module)

  1. 备份 防止出错

    在目录 /usr/sbin中找到nginx备份

    sudo cp /usr/sbin/ngin /usr/sbin/nginx.bak
    
  2. 使用已经重新编译过的nginx替换安装的nginx程序

    具体编译过程看
    链接

    sudo mv ~/nginx /usr/sbin/
    
  3. 重启nginx

    sudo service nginx restart
    
  4. 测试静态压缩模块和动态压缩模块是否成功

    在nginx.conf配置文件中加入相关的配置内容,在vue项目打包的时候使用插件compression-webpack-plugin 将项目中的静态资源同时打包一份同名的.gz文件,部署完成后通过访问不通类型的静态资源查看是否符合预期:

    • 在有同名的.gz文件的时候nginx会优先启用静态压缩模块,不选择动态压缩。测试:关闭动态压缩的配置查看response heard 中的Content-Encoding是否是gzip
    • 在访问没有同名的静态文件的时候,nginx会启动动态压缩模块,将静态文件压缩位zip格式进行传输。测试:访问没有同名的.gz文件的静态文件,查看response heard 中的Content-Encoding是否是gzip

特别注意:想要进行压缩传输的文件格式一定要加到 gzip_types 中否则动态压缩不会对此类文件进行压缩。

#gzip模块设置
   	#打开静态压缩 - 如果有相同文件名的.gz文件则会发送该文件,不进行压缩,从而节省cpu资源,无则进行动态压缩,需要前端打包压缩相关文件
   	#需要安装 http_gzip_static_module 模块,
   	#查看是否已安装此模块 nginx -V 无则安装 ./configure --with-http_gzip_static_module ,ubuntu需要重新源码编译替换apt安装的nginx程序,
   	#apt安装的测试发现并没有安装 http_gzip_static_module 模块 虽然nginx -V 能看到有
   	gzip_static  on;
   	gzip_proxied expired no-cache no-store private auth;
   
   	#开启动态gzip压缩输出 优先级小于静态,即同时开启后如果存在同名的 .gz 文件则会直接读取,不会进行压缩
   	gzip on; 
   	#允许压缩的页面的最小字节数,页面字节数从header偷得content-length中获取.默认是0,不管页面多大都进行压缩.建议设置成大于1k的字节数,小于1k可能会越压越大
   	gzip_min_length 1k; 
   	#设置用于处理请求压缩的缓冲区数量和大小。比如32 4K表示按照内存页(one memory page)大小以4K为单位(即一个系统中内存页为4K),申请32倍的内存空间。建议此项不设置,使用默认值。
   	gzip_buffers 32 4k; 
   	#压缩版本(默认1.1,目前大部分浏览器已经支持gzip解压.前端如果是squid2.5请使用1.0)
   	gzip_http_version 1.1; 
   	#压缩等级.1压缩比最小,处理速度快.9压缩比最大,比较消耗cpu资源,处理速度最慢,但是因为压缩比最大,所以包最小,传输速度快
   	gzip_comp_level 2; 
   	#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn.
   	gzip_types text/plain application/javascript application/x-javascript text/css application/xml 
   			text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject 
   			font/ttf font/opentype font/x-woff image/svg+xml;
   	#选项可以让前端的缓存服务器缓存经过gzip压缩的页面.例如:用squid缓存经过nginx压缩的数据
   	gzip_vary on;
   	#IE6对Gzip不怎么友好,不给它Gzip了
   	gzip_disable "MSIE [1-6]\.";

nginx.conf配置文件

user www-data;

#auto
#nginx进程数,建议设置为等于CPU总核心数.
worker_processes 4;

#分配nginx进程到四核cpu,一至四个核分别表示为 0001 0010 0100 1000
worker_cpu_affinity 0001 0010 0100 1000;

worker_processes     8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;



pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;


#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)
#与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致.
#worker_rlimit_nofile 1024;



events {
	#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; 
	#epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型.
	use epoll;
	#768
	worker_connections 7680;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 180;
	client_max_body_size 20m;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

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

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	# 
	##

	#gzip模块设置
	#打开静态压缩 - 如果有相同文件名的.gz文件则会发送该文件,不进行压缩,从而节省cpu资源,无则进行动态压缩,需要前端打包压缩相关文件
	#需要安装 http_gzip_static_module 模块,
	#查看是否已安装此模块 nginx -V 无则安装 ./configure --with-http_gzip_static_module ,ubuntu需要重新源码编译替换apt安装的,
	#apt安装的测试发现并没有安装 http_gzip_static_module 模块 虽然nginx -V 能看到有
	gzip_static  on;
	gzip_proxied expired no-cache no-store private auth;

	#开启动态gzip压缩输出 优先级小于静态,即同时开启后如果存在同名的 .gz 文件则会直接读取,不会进行压缩
	gzip on; 
	#允许压缩的页面的最小字节数,页面字节数从header偷得content-length中获取.默认是0,不管页面多大都进行压缩.建议设置成大于1k的字节数,小于1k可能会越压越大
	gzip_min_length 1k; 
	#设置用于处理请求压缩的缓冲区数量和大小。比如32 4K表示按照内存页(one memory page)大小以4K为单位(即一个系统中内存页为4K),申请32倍的内存空间。建议此项不设置,使用默认值。
	gzip_buffers 32 4k; 
	#压缩版本(默认1.1,目前大部分浏览器已经支持gzip解压.前端如果是squid2.5请使用1.0)
	gzip_http_version 1.1; 
	#压缩等级.1压缩比最小,处理速度快.9压缩比最大,比较消耗cpu资源,处理速度最慢,但是因为压缩比最大,所以包最小,传输速度快
	gzip_comp_level 2; 
	#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn.
	gzip_types text/plain application/javascript application/x-javascript text/css application/xml 
			text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject 
			font/ttf font/opentype font/x-woff image/svg+xml;
	#选项可以让前端的缓存服务器缓存经过gzip压缩的页面.例如:用squid缓存经过nginx压缩的数据
	gzip_vary on;
	#IE6对Gzip不怎么友好,不给它Gzip了
	gzip_disable "MSIE [1-6]\.";
	
	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}


#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#	# auth_http localhost/auth.php;
#	# pop3_capabilities "TOP" "USER";
#	# imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
# 
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}

你可能感兴趣的:(nginx)