Nginx 的状态监控及其相关架构

lance 2020-04-24 PM 193℃ 0条

系统命令/工具查看 nginx 状态信息

  • 使用 top -c

52671-53bbfb7ul27.png

  • 使用 ps aux | grep nginx

95127-b34jdi4dha5.png

  • 使用 netstat -lnp | grep nginx

64539-5kw6b1ugq9w.png

  • 使用 lsof -c nginx

59611-gjdvs1lq9l.png

  • 查看 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 架构

图示

42952-389gtvvjpc.png

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 架构

图示

41025-o55wcvuuob.png

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 架构

图示

61807-rzo5kyxyaa9.png


非特殊说明,本博所有文章均为博主原创。

觉得文章不错,打赏一点吧,1分也是爱😀

WeChat Pay

微信打赏

Alipay

支付宝打赏

评论啦~