Nginx开启GZIP文件紧缩的具体指南-让你轻松优化网站性能 (nginx开机自启动 linux)
简介
GZip是一种改良web运行程序性能的技术,文件紧缩后再传输可以缩小传输数据,优化传输速度。在主机上开启Gzip紧缩可以有效缩小网络传输流量,优化网站的访问速度和性能。
可以作用于任何字节流的通用紧缩程序。它会在后盾记忆一些之前看到的内容,并尝试以高效形式查找并交流重复的数据片段,从而到达较好的压成果。但经常使用gzip紧缩的最大失误之一就是用gzip紧缩页面中的每个资源文件。
支持资源类型
实践上,GZip关键用于对文本类型的资源启动紧缩,例如罕用见的文本资源:
GZip对基于文本的内容的资源紧缩成果最好,在紧缩较大文件时往往可成功高达70-90%的紧缩率,而假设对曾经经过代替算法紧缩过的资源(例如,大少数图片格局)运转gzip,则成果甚微,甚至毫有成果。
阅读器支持状况
如图所示,目前一切干流的现代阅读器都支持gzip紧缩,如下图所示:
阅读器在发送恳求时会智能恳求该紧缩编码的格局,如下图的恳求头消息所示:
启用GZip
Nginx能否支持GZip
nginx中的gzip处置模块是:ngx_http_gzip_module。可以经常使用:nginx-V命令,检查nginx主机能否开启了对gzip的支持模块:
假设显示如上图所示的:–with-http_gzip_static_module,就说明你的nginx主机曾经支持gzip了,可以开局性能gzip紧缩了。
未开启GZIP紧缩
修正mall.conf性能文件,启动限速操作
server{listen80;server_namemall.tinywan.com;limit_rate128k;#限度网速为128Klocation/{root/usr/share/nginx/html/mall;indexindex.htmlindex.htm;}error_page500502503504/50x.html;location=/50x.html{root/usr/share/nginx/html;}}
对mall的前端名目mall.tinywan.com启动访问,咱们可以发现网站中有个js文件比拟大,须要加载12s。
Nginx前往恳求头消息如下
开启GZIP紧缩
开启Gzip模块。在Nginx性能文件中的http块内参与以下内容:
http{gzipon;gzip_typestext/plnapplication/javascript;}
这里的gzipon示意开启gzip紧缩,gzip_types指定须要启动紧缩的文件类型,例如text/plain示意纯文本文件,application/javascript示意JavaScript文件。
完整性能文件
http{gzipon;#开启gzipgzip_disable"msie6";#IE6不经常使用gzipgzip_varyon;#设置为on会在Header里参与"Vary:Accept-Encoding"gzip_proxiedany;#代理结果数据的紧缩gzip_comp_level6;#gzip紧缩比(1~9),越小紧缩成果越差,但是越大处置越慢,所以普通取两边值gzip_buffers168k;#失掉多少内存用于缓存紧缩结果gzip_http_version1.1;#识别http协定的版本gzip_min_length1k;#设置准许紧缩的页面最小字节数,超越1k的文件会被紧缩gzip_typesapplication/javascripttext/css;#对特定的MIME类型失效,js和css文件会被紧缩include/etc/nginx/conf.d/*.conf;}
再次对mall的前端名目mall.tinywan.com启动访问,咱们可以发现js文件曾经被紧缩,加载期间缩短到3.88s,提速3倍左右:
总结
在主机端Nginx启用gzip紧缩,关于目前盛行的单页面运行而言,起到的前端性能优化作用的意义就更大了,由于单页面运行的界面齐全是由JavaScript灵活绘制进去的,启用gzip紧缩更极速的加载资源文件,特意是JavaScript脚本文件,就能尽快地显示界面,从而优化用户体验。
启用gzip紧缩除了优化了页面的加载速度外,而关于公司来讲,启用gzip紧缩后,网站关于网络带宽的需求也降落了,或许说是在现有的带宽状况下,能够愈加充沛的应用带宽资源,从常年效益来看,也可以直接的降落公司在带宽上的运转老本。
安全开发运维必备的Nginx代理Web服务器性能优化与安全加固配置
为了更好的指导部署与测试艺术升系统nginx网站服务器高性能同时下安全稳定运行,需要对nginx服务进行调优与加固;
本次进行Nginx服务调优加固主要从以下几个部分:
本文档仅供内部使用,禁止外传,帮助研发人员,运维人员对系统长期稳定的运行提供技术文档参考。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx作为负载均衡服务器, Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。
Nginx版本选择:
项目结构:
Nginx文档帮助:首页地址目录: /usr/share/nginx/htmlNginx配置文件:
localtion 请求匹配的url实是一个正则表达式:
Nginx 匹配判断表达式:
例如,匹配末尾为如下后缀的静态并判断是否存在该文件, 如不存在则404。
查看可用模块编译参数:
http_gzip模块 开启gzip压缩输出(常常是大于1kb的静态文件),减少网络传输;
http_fastcgi_module模块 nginx可以用来请求路由到FastCGI服务器运行应用程序由各种框架和PHP编程语言等。可以开启FastCGI的缓存功能以及将静态资源进行剥离,从而提高性能。
keepalive模块 长连接对性能有很大的影响,通过减少CPU和网络开销需要开启或关闭连接;
http_ssl_module模块 Nginx开启支持Https协议的SSL模块
Linux内核参数部分默认值不适合高并发,Linux内核调优,主要涉及到网络和文件系统、内存等的优化,
下面是我常用的内核调优配置:
文件描述符 文件描述符是操作系统资源,用于表示连接、打开的文件,以及其他信息。NGINX 每个连接可以使用两个文件描述符。例如如果NGINX充当代理时,通常一个文件描述符表示客户端连接,另一个连接到代理服务器,如果开启了HTTP 保持连接,这个比例会更低(译注:为什么更低呢)。
对于有大量连接服务的系统,下面的设置可能需要调整一下:
精简模块:Nginx由于不断添加新的功能,附带的模块也越来越多,建议一般常用的服务器软件使用源码编译安装管理;
(1) 减小Nginx编译后的文件大小
(2) 指定GCC编译参数修改GCC编译参数提高编译优化级别稳妥起见采用 -O2 这也是大多数软件编译推荐的优化级别。
GCC编译参数优化 [可选项] 总共提供了5级编译优化级别:
常用编译参数:
缓存和压缩与限制可以提高性能 NGINX的一些额外功能可用于提高Web应用的性能,调优的时候web应用不需要关掉但值得一提,因为它们的影响可能很重要。
简单示例:
1) 永久重定向
例如,配置 http 向 https 跳转 (永久)
nginx配置文件指令优化一览表
描述:Nginx因为安全配置不合适导致的安全问题,Nginx的默认配置中存在一些安全问题,例如版本号信息泄露、未配置使用SSL协议等。对Nginx进行安全配置可以有效的防范一些常见安全问题,按照基线标准做好安全配置能够减少安全事件的发生,保证采用Nginx服务器系统应用安全运行;
Nginx安全配置项:
温馨提示: 在修改相应的源代码文件后需重新编译。
设置成功后验证:
应配置非root低权限用户来运行nginx服务,设置如下建立Nginx用户组和用户,采用user指令指运行用户
加固方法:
我们应该为提供的站点配置Secure Sockets Layer Protocol (SSL协议),配置其是为了数据传输的安全,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
不应使用不安全SSLv2、SSLv3协议即以下和存在脆弱性的加密套件(ciphers), 我们应该使用较新的TLS协议也应该优于旧的,并使用安全的加密套件。
HTTP Referrer Spam是废品信息发送者用来提高他们正在尝试推广的网站的互联网搜索引擎排名一种技术,如果他们的废品信息链接显示在访问日志中,并且这些日志被搜索引擎扫描,则会对网站排名产生不利影响加固方法:
当恶意攻击者采用扫描器进行扫描时候利用use-agent判断是否是常用的工具扫描以及特定的版本,是则返回错误或者重定向;
Nginx支持webdav,虽然默认情况下不会编译。如果使用webdav,则应该在Nginx策略中禁用此规则。加固方法: dav_methods 应设置为off
当访问一个特制的URL时,如../,stub_status模块提供一个简短的Nginx服务器状态摘要,大多数情况下不应启用此模块。加固方法文件中stub_status不应设置为:on
如果在浏览器中出现Nginx自动生成的错误消息,默认情况下会包含Nginx的版本号,这些信息可以被攻击者用来帮助他们发现服务器的潜在漏洞加固方法: 关闭Server响应头中输出的Nginx版本号将server_tokens应设置为:off
client_body_timeout设置请求体(request body)的读超时时间。仅当在一次readstep中,没有得到请求体,就会设为超时。超时后Nginx返回HTTP状态码408(Request timed out)。加固方法文件中client_body_timeout应设置为:10
client_header_timeout设置等待client发送一个请求头的超时时间(例如:GET / HTTP/1.1)。仅当在一次read中没有收到请求头,才会设为超时。超时后Nginx返回HTTP状态码408(Request timed out)。
加固方法文件中client_header_timeout应设置为:10
keepalive_timeout设置与client的keep-alive连接超时时间。服务器将会在这个时间后关闭连接。
加固方法文件中keepalive_timeout应设置为:55
send_timeout设置客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,Nginx就会关闭连接。
加固方法文件中send_timeout应设置为:10
GET和POST是Internet上最常用的方法。Web服务器方法在RFC 2616中定义禁用不需要实现的可用方法。
加固方法:
limit_zone 配置项限制来自客户端的同时连接数。通过此模块可以从一个地址限制分配会话的同时连接数量或特殊情况。
加固方法文件中limit_zone应设置为:slimits $binary_remote_addr 5m
该配置项控制一个会话同时连接的最大数量,即限制来自单个IP地址的连接数量。
加固方法 文件中 limit_conn 应设置为: slimits 5
加固方法:
加固方法:
解决办法:
描述后端获取Proxy后的真实Client的IP获取需要安装--with-http_realip_module,然后后端程序采用JAVA((X-Real-IP))进行获取;
描述: 如果要使用geoip地区选择,我们需要再nginx编译时加入 --with-http_geoip_module 编译参数。
描述: 为了防止外部站点引用我们的静态资源,我们需要设置那些域名可以访问我们的静态资源。
描述: 下面收集了Web服务中常规的安全响应头, 它可以保证不受到某些攻击,建议在指定的 server{} 代码块进行配置。
描述: 为了防止某些未备案的域名或者恶意镜像站域名绑定到我们服务器上, 导致服务器被警告关停,将会对业务或者SEO排名以及企业形象造成影响,我们可以通过如下方式进行防范。
执行结果:
描述: 有时你的网站可能只需要被某一IP或者IP段的地址请求访问,那么非白名单中的地址访问将被阻止访问, 我们可以如下配置;
常用nginx配置文件解释:
(1) 阿里巴巴提供的Concat或者Google的PageSpeed模块实现这个合并文件的功能。
(2) PHP-FPM的优化如果您高负载网站使用PHP-FPM管理FastCGI对于PHP-FPM的优化非常重要
(3) 配置Resin on Linux或者Windows为我们可以打开 resin-3.1.9/bin/ 在不影响其他代码的地方加入=TLSv1.2, 例如
原文地址:
服务器开启Gzip压缩功能
在负载均衡中有一个必须要做的事情就是给服务器开启Gzip压缩功能,对用户请求的页面进行压缩处理,以达到节省网络带宽,提高网站速度的作用。 Gzip是若干文件压缩程序的简称,通常指GNU计划的实现,此处的Gzip代表的就是GUN ZIP,这也是HTTP1.1协议定义的两种压缩方法中最常用的一种压缩方法,客户端浏览器大都支持这种压缩格式。 接下来,将介绍Apache、Nginx 如何开启Gzip压缩。 Apache开启Gzip要看查看是否已经开启mod_deflate模块,如果没有则需要先加载,在配置文件中将 前面的#号去掉。 另外,如果对Apache的配置文件不太懂的客户在修改配置文件之前对配置文件进行备份。 开启模块后,在配置文件的最下面空白处添加一下内容:其中DeflateCompressionLevel 的意思是压缩等级,共分为1-9,9级为最高,不建议使用太高的压缩比,这样会对CPU产生太大的负担。 打开配置文件 找到Gzip on 把前面的注释符号#去掉即可开启GZIP服务。 然后配置GZIP即可。 下面是一个相对优化不错的配置。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。