nginx使用笔记

nginx好用的指令

  1. 查看nginx各种信息 nginx -V(大写V),能看到配置文件的位置和使用到的模块,例如:
    nginx v-V 的功能

监控nginx

ngx_http_stub_status监控连接信息

安装

监控是否安装了这个模块,使用nginx -V
如果没有安装,那就补安装,具体的步骤:
1、./configure --with-ngx_http_stub_status
2、make (注意不能make install)
3、覆盖之前的sbin/nginx
4、./nginx -s reload
5、查看 nginx —v检查是否安装
参考:https://www.cnblogs.com/zhming26/p/6278535.html

配置

在conf里面配置:
在这里插入图片描述

使用

启动:nginx -s reload
查看:
在这里插入图片描述

ngxtop监控请求信息

1.这个工具不是nginx原生的,介绍https://github.com/lebinh/ngxtop
安装:yum install epel-release
yum install python-pip
pip install ngxtop
2.使用,记得把access.log的配置加上去https://www.cnblogs.com/czlun/articles/7010591.html
然后调用ngxtop -c /usr/local/nginx/nginx.conf配置文件就能得到请求了。结果如下:
在这里插入图片描述
各种详细用法可以看官网

nginx rrd监控

这是一款图形界面,既可以监控连接信息,也可以监控请求信息。以下基于centos系统

前置条件

前置条件一是nginx必须安装了ngx_http_stub_status模块

前置条件二是安装了php

1、安装php
yum install php php-gd php-soap php-mbstring php-xmlrpc php-dom php-fpm -y
2、nginx 整合php-fpm
修改 /etc/php-fpm.d/www.conf文件中user和group,与nginx.conf的user一致:
nginx配置中的用户:
在这里插入图片描述
/etc/php-fpm.d/www.conf中的用户需要为:
在这里插入图片描述
user和group都要为nginx
3、启动php-fpm服务
php-fpm
在这里插入图片描述
netstat -tunlp | grep 9000能够看到那个php-fpm服务启动了
4、nginx配置php:
在这里插入图片描述

注意到root /opt/php-fpm我们的php文件需要放在那个目录下面。
6、填写php文件
在/opt/php-fpm下面
vim /opt/php-fpm/idx.php,文件的内容为:

<?php phpinfo();?>

在这里插入图片描述
7、验证php-fpm是否安装成功:
在这里插入图片描述
说明php和nginx继承成功。

安装

这个[连接](http://www.linuxde.net/2012/04/9537.html)就是安装的步骤,以下基于centos:
1、安装nginx-rrd相关依赖
yum install perl rrdtool perl-libwww-perl libwww-perl perl-rrdtool
2、下载nginx-rrd
wget http://soft.vpser.net/status/nginx-rrd/nginx-rrd-0.1.4.tgz
3、解压配置
tar zxvf nginx-rrd-0.1.4.tgz
cd nginx-rrd-0.1.4
cp usr/sbin/* /usr/sbin #复制主程序文件到 /usr/sbin 下
cp etc/nginx-rrd.conf /etc #复制配置文件到 /etc 下

创建Nginx-rrd生成目录:
mkdir -p /pydata/wwwroot/nginx && mkdir /pydata/wwwroot/nginx/rrd
cp html/index.php /pydata/wwwroot/nginx

编辑配置文件:
vim /etc/nginx-rrd.conf
修改RRD_DIR和WWW-DIR为之前创建的目录,SERVERS_URL为要监听的地址(多个主机可以用空格隔开),如下:
在这里插入图片描述
修改nginx php文件的路径为刚刚html里面的index.php的位置:
在这里插入图片描述

设置定时采集数据:
crontab -e

          • sh/usr/sbin/nginx-collect
            /1 * * * sh /usr/sbin/nginx-graph
            查看定时任务是否执行:
            tail -f /var/log/cron

使用ab 测试nginx-rrd

如果没有安装则安装:yum install httpd-tools
然后测试:
ab -n 10000 -c 10 http://127.0.0.1:9394/index.php
打开界面观察:
http://192.168.1.22:9394/index.php

nginx调优

增加工作线程数和并发连接数

worker_processes 4 #cpu
events{
worker_connections 1024 #每隔进程打开的最大连接数,包括了nginx与客户端nginx与upstream之间的连接
multi_accept on #可以一次建立多个连接
use epoll;
}

启用长连接

upstream server_pool{
server localhost:8080 weight=1 max_fails=2 fail_timeout=30s;
keepalive 300; #300个长连接
}

启动缓存、压缩

gzip on;
gzip_http_version 1.1;
gzip_disable “MSIE [1-6].”;
gzip proxied any;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;#Vary:accept-Encoding
gizp_static on;#如果有压缩好的,直接使用

参考

操作系统优化

配置文件/etc/sysctl.conf
sysctl -w net.ipv4.tcp_syncookies=1#防止一个套接字在有多个试图连接到达时引起过载
sysctl -w net.core.somaxconn=1024#默认128,连接队列
sysctl -w net.ipv4.tcp_fin_timeout=10 #timewait的连接时间
sysctl -w net.ipv4.tcp_tw_reuse=1 #0S直接使用timewait的连接
sysctl -w net.ipv4.tcp_tw_recycle=0 #回收禁止
配置文件 /etc/security/limits.conf
* hard nofile 204800
* soft nofile 204800
* soft core unlimited
* soft stack 204800

nginx其他优化

sendfile on;#减少文件在应用和内核之间拷贝
tcp_nopush on;#当数据包达到一定的大小再发送
tcp_nodelay off;#有数据随时发送

选项TCP_NODELAY是禁用Nagle算法,即数据包立即发送出去
tcp_nodelay和tcp_nopush参考

猜你喜欢

转载自blog.csdn.net/fst438060684/article/details/83211837