性能测试之Nginx设置

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

介绍

Nginx (engine x) 是一个高性能的HTTP反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

---摘自百度百科

安装方式

源码安装

源码编译可以指定所需要安装的模块:

[root@localhost /]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
复制代码

如果缺少模块,需要重新编译:

[root@localhost /]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
复制代码

但是不需要make,避免覆盖原nginx目录

rpm安装

下载rpm包地址:

[root@localhost opt]# wget <https://centos.pkgs.org/7/getpagespeed-x86_64/nginx-1.18.0-1.el7.ngx.x86_64.rpm.html>

[root@localhost opt]# rpm -i [nginx-1.18.0-1.el7.ngx.x86_64.rpm](https://centos.pkgs.org/7/getpagespeed-x86_64/nginx-1.18.0-1.el7.ngx.x86_64.rpm.html)
复制代码

rpm安装包没这个问题,但是它安装之后的命令是:/usr/sbin/nginx,需要覆盖或重新创建软链/usr/bin/nginx

关于rpm卸载
[root@localhost opt]# rpm -qa|grep nginx

nginx-1.18.0-1.el7.ngx.x86_64

[root@localhost opt]# rpm -e nginx-1.18.0-1.el7.ngx.x86_64
复制代码

如果nginx没有--with-http_stub_status_module模块,添加以下配置,-t测试时会失败。

location /nginx_tatus {      
    stub_status  on;      
    access_log   off; 
}

[root@localhost /]# nginx -t # 测试,  
[root@localhost /]# nginx -s reload #静态加载
复制代码

访问:http://192.168.2.58/ng_status

Active connections: 2 server accepts handled requests 42 42 198 Reading: 0 Writing: 1 Waiting: 1

Active connections – 表示Nginx正在处理的活动连接数为2个 

server 表示Nginx启动到现在共处理了42 个连接

accepts 表示Nginx启动到现在共成功创建42 次握手

handled requests  表示总共处理了198次请求



reading — 读取客户端的连接数. 

writing — 响应数据到客户端的数量 

waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接
复制代码

开启nginx服务日志

log_format main '$remote_addr - $remote_user [$time_local] 
                                "$request" ' '$status $body_bytes_sent "$http_refer
                                '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main;                                
复制代码

查看日志

[root@localhost conf]# tail -f logs/access.log 
192.168.2.188 - - [21/Oct/2021:18:55:22 +0800] "GET /jforum/ping_session.jsp HTTP/1.1" 200 376 "http://192.168.2.58/jforum/ping_session.jsp" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36" "-" 
192.168.2.188 - - [21/Oct/2021:18:56:22 +0800] "GET /jforum/ping_session.jsp HTTP/1.1" 200 376 "http://192.168.2.58/jforum/ping_session.jsp" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36" "-" 
192.168.2.188 - - [21/Oct/2021:18:57:22 +0800] "GET /jforum/ping_session.jsp HTTP/1.1" 200 376 "http://192.168.2.58/jforum/ping_session.jsp" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36" "-"
复制代码

nginx配置优化

都是在nginx.conf配置全局;

连接池

events { worker_connections 20; }

cpu处理个数

worker_processes 1;

一些压缩

gzip on; # 等等
复制代码