什么是Nginx
在此之前也介绍过相关的内容与安装过程,介于实际生产运维环境中使用之多,还是有必要详细了解和理解它的一些强大的功能与特性。
Nginx作为一个轻量级的HTTP服务器,相比Apache优势也是比较明显的,在性能上它占用资源少,能支持更高更多的并发连接,从而达到提高访问效率;在功能上它是一款非常优秀的代理服务器与负载均衡服务器;在安装配置上它安装,配置都比较简单
Nginx的优势简介:
经常在运维面试中,面试官会问到,你们用什么HTTP服务器啊?为什么用它??
1、作为WEB服务器而言,Nginx处理静态文件的效率比较高
2、作为代理服务器而言,Nginx可以实现无缓存的反向代理加速来提高WEB站点的运行速度,提高用户访问的体验
3、作为负载均衡服务器而言,支持的应用较多,同时也支持容错功能,自带算法进行负载均衡调度
4、性能方面而言,采用内核poll模型,支持更多的并发连接,官方显示最大可支持50000个并发连接的请求响应,但占用资源很少且非常稳定
Nginx日常配置优化
1、日志切割
由于Nginx没有Apache服务的cronolog日志切割功能,所以需要进行相关优化处理,可以编写脚本来自动切割日志文件
#!/bin/sh
logpath="/nginx/logpath"
nginxlogs="/var/log/nginx/"
mkdir -p $logpath/$(date +%Y)
mv $nginxlogs/access.log $logpath/$(date +%Y)/access_$(date +F).log
mv $nginxlogs/error.log $logpath/$(date +%Y)/access_$(date +F).log
kill -USR1 `cat /var/log/nginx/nginx.pid`
##通过USR1信号来控制进程,从而重新生成一个新的日志文件
nginx对进程的控制功能非常强,可以通过信号指令来控制进程,常用信号如下
QUIT 处理完当前请求后关闭进程
HUP 重新加载配置,不会中断用户的访问请求
USR1 用于切割日志
USR2 用于平滑升级可执行程序
最后将脚本执行命令加入到定时任务来实现自动切割日志
2、nginx中FastCGI参数优化
提高nginx环境下PHP的运行效率,可以将下面的配置加入到主配置文件中
fastcgi_cache_path /application/nginx/fastcgi_cache_levels=1:2 keys_zone=TEST:10m inactive=5m;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_cache TEST;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 3011d;
fastcgi_cache_valid any 1m;
##应答缓存时间
3、nginx的HTTPgzip模块配置
#查看nginx编译参数
[root@centos7 ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments:
--with-http_stub_status_module
--with-http_gzip_static_module
--with-http_ssl_module
--prefix=/usr/local/nginx
可以看出在编译时已加上此模块,因此只需要在配置文件里进行配置即可
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
更多技术干货,可关注民工哥微信公众号
一起交流,共同提高!!!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。