Nginx 的状态监控及其相关架构
lance
2020-04-24 PM
1369℃
0条
系统命令/工具查看 nginx 状态信息


- 使用 netstat -lnp | grep nginx


- 查看 nginx 访问日志
nginx 日志配置需要在虚拟主机配置文件中配置
如 tail -f /data/nginx/blog/error.log 查看错误日志
如 tail -f /data/nginx/blog/access.log 查看访问日志
使用 nginx 模块查看状态信息
配置 Nginx 状态
Nginx 有内置一个状态页,需要在编译的时候指定参数 --with-http_stub_status_module 参数方可打开。
也就是说,该功能是由 http_stub_status_module 模块提供,默认没有加载。
Nginx 配置文件示例
server{
listen 80;
server_name www.a.com;
location /status/ {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 192.168.10.0/24;
deny all;
}
}
配置说明
- location /status/ 这样当访问 /status/ 时即可访问到状态页内容。
- stub_status on 即打开了状态页。
- access_log off 不记录日志
- allow 和 deny 只允许指定 IP 和 IP 段访问,因为这个页面需要保护起来,并不公开,当然也可以做用户认证。
测试和结果说明
测试命令:curl -x127.0.0.1:80 www.a.com/status/
结果如下:
Active connections: 1
server accepts handled requests
11 11 11
Reading: 0 Writing: 1 Waiting: 0
说明:
active connections – 活跃的连接数量
server accepts handled requests — 总共处理的连接数、成功创建的握手次数、总共处理的请求次数
需要注意,一个连接可以有多次请求。
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.
LNMP 架构
图示

nginx 与 php 交互的配置
配置如下(在 server 部分添加):
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
配置说明:
1 fastcgi_params 文件在 /usr/local/nginx/conf/ 下面,其内容为 fastcgi 相关的变量
2 fastcgi_pass 后面跟的是 php-fpm 服务监听地址,可以是 IP:PORT,也可以是 unix socket地址,也支持 upstream 的地址
3 fastcgi_index 定义索引页,如果在 server 内其他部分有定义 index 参数,该配置可以忽略
4 fastcgi_param 这行其实可以在 fastcgi_params 文件里面定义 SCRIPT_FILENAME 变量,这个变量如果不定义,php 的请求是没办法访问的。
Tomcat 架构
图示

nginx 与 tomcat 交互的配置
配置文件示例
server
{
listen 80;
server_name www.a.com;
location ~* "\.(jpg|png|jepg|js|css|xml|bmp|swf|gif|html)$"
{
root /data/wwwroot/a/;
access_log off;
expire 7d;
}
location /
{
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
说明:
1 首先,把各种静态文件的请求分离出来,单独由 nginx 处理。
2 其他请求直接代理 8080 端口,即 tomcat 服务。
Nginx + Keepalived 架构
图示
