HTTP服务器Nginx服务介绍续

时间:2022-07-25
本文章向大家介绍HTTP服务器Nginx服务介绍续,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

HTTP服务器Nginx服务

什么是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模块配置

[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;