1.安装ubuntu(如果已经安装了,可以跳过)
# 安装必要工具 sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring # 导入官方Nginx签名密钥 curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null # 验证下载的文件中包含正确的密钥 gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg # 设置稳定版本的nginx仓库 echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list # 通过apt安装nginx sudo apt update sudo apt install nginx
2.确认安装的nginx版本信息
输入 nginx -V 检查回显
nginx version: nginx/1.20.2 built by gcc 9.3.0 (Ubuntu 9.3.0-10ubuntu2) built with OpenSSL 1.1.1f 31 Mar 2020 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.20.2/debian/debuild-base/nginx-1.20.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'
通过上述回显,我们可以看到nginx的配置文件路径和程序路径如下。这个路径用在后面的动态编译里
--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
3.下载nginx源代码到本地
因为我们之前的nginx是apt安装的,本地没有源码,而动态编译模块需要源码,所以这里下载源码到本地
进入http://nginx.org/en/download.html,下载与我们上面apt安装的nginx同版本的tar.gz包,例如这里我们装的是1.20.2版本
解压nginx源代码 tar -zxvf nginx-1.20.2.tar.gz
4.下载第三方模块nginx-module-vts到本地
git clone git://github.com/vozlt/nginx-module-vts.git
下载完成后,两个目录同级,例如下面的目录
目录 |---nginx-1.20.2 |---nginx-module-vts
5.进行编译
安装编译所需要的lib库
sudo apt install g++ gcc libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev make
进入nginx-1.20.2目录
cd nginx-1.20.2
使用configure工具进行编译。编译完成后会在objs目录下生成文件ngx_http_vhost_traffic_status_module.so,把这个ngx_http_vhost_traffic_status_module.so拷贝到/etc/nginx/modules/目录下
./configure --with-compat --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --add-dynamic-module=../nginx-module-vts make modules sudo cp objs/ngx_http_vhost_traffic_status_module.so /etc/nginx/modules/.
6.在nginx里加载第三方模块nginx-module-vts
编辑nginx.conf文件.
在文件顶部添加load_module modules/ngx_http_vhost_traffic_status_module.so;
在http下添加vhost_traffic_status_zone;
cd /etc/nginx/ sudo nano nginx.conf # 以下是文件内容 ... load_module modules/ngx_http_vhost_traffic_status_module.so; ... http { vhost_traffic_status_zone; }
在/etc/nginx/conf.d目录下增加一个monitor.conf。主要添加vhost_traffic_status_display;和vhost_traffic_status_display_format html; 参考如下
server { listen 5320; server_name localhost; #access_log /var/log/nginx/host.access.log main; location /status { vhost_traffic_status_display; vhost_traffic_status_display_format html; root /usr/share/nginx/html; index index.html index.htm; } }
添加完成后,输入sudo systemctl restart nginx重启nginx
访问monitor.conf里对应的端口 http://服务器IP:5320/ 即可看到流量信息