Nginx 简介
Nginx 是一款轻量级的 Web 服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。而 Nginx 的访问日志不管是做用户行为分析还是安全分析都是非常重要的数据源之一。如何有效便捷的采集 Nginx 的日志进行有效的分析成为大家关注的问题(下一节分享 Filebeat 进行日志采集)。
Nginx 互联网架构
高可用
Nginx 作为请求入口,很重要,如果出现单点问题,显然是不可接受的。可以通过 Keepalived+Nginx 实现高可用。
Keepalived 是一个高可用解决方案,主要是用来防止服务器单点发生故障,可以通过和 Nginx 配合来实现 Web 服务的高可用。
实现高可用的思路:
- 请求不要直接打到 Nginx 上,应该先通过 Keepalived(这就是所谓虚拟IP,VIP)
- Keepalived 通过监控 Nginx 的生命状态(提供一个用户自定义的脚本,定期检查 Nginx 进程状态,进行权重变化,从而实现 Nginx 故障切换)
Nginx 安装
yum 安装 Nginx
# 使用 yum 安装是在线安装,直接使用命令 yum -y install nginx 安装即可yum -y install nginx
启动 Nginx 服务
service nginx startStarting nginx: [ OK ]
停止 Nginx 服务
service nginx stop Stopping nginx: [ OK ]
重启 Nginx 服务
service nginx restartStopping nginx: [ OK ]Starting nginx: [ OK ]
源码包安装 Nginx
首先安装缺少的依赖包
# 下载路径为 /usr/local/src/cd /usr/local/src/ wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gztar -zxvf ngx_cache_purge-2.3.tar.gz wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz tar -zxvf openssl-1.0.2h.tar.gz wget https://ftp.pcre.org/pub/pcre/pcre-8.38.tar.gztar -zxvf pcre-8.38.tar.gz # https://github.com/yaoweibin/nginx_upstream_check_modulewget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zipunzip master.zip -d /usr/local/src
下载并解压 Nginx
wget http://nginx.org/download/nginx-1.10.1.tar.gztar -zxvf nginx-1.10.1.tar.gz
解压缩后,可以看到 nginx-1.10.1 目录,然后进入这个目录
# 进入这个目录cd nginx-1.10.1/ # 执行配置./configure --user=www-data --group=www-data --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=/usr/local/src/nginx_upstream_check_module-master --add-module=/usr/local/src/ngx_cache_purge-2.3 --with-http_v2_module --with-openssl=/usr/local/src/openssl-1.0.2h # make 命令 make && make install
常用编译选项说明
--prefix=PATH
:指定nginx
的安装目录。默认/usr/local/nginx
,我的是/usr/local/nginx
--conf-path=PATH
:设置nginx.conf
配置文件的路径。nginx
允许使用不同的配置文件启动,通过命令行中的-c
选项。默认为conf/nginx.conf
--user=name
:设置nginx
工作进程的用户。安装完成后,可以随时在nginx.conf
配置文件更改user
指令。默认的用户名是nobody
。--group=name
类似--with-pcre
:设置 PCRE 库的源码路径,如果已通过 yum 方式安装,使用--with-pcre
自动找到库文件。使用--with-pcre=PATH
时,需要从 PCRE 网站下载pcre库的源码(8.39)并解压,指定 pcre 的源码路径 ,比如:--with-pcre=/root/pcre-8.39/
。perl
正则表达式使用在location
指令和ngx_http_rewrite_module
模块中。--with-zlib=PATH
:指定zlib
(版本1.1.3 - 1.2.5)的源码解压目录。在默认就启用的网络传输压缩模块ngx_http_gzip_module
时需要使用zlib
。--with-http_ssl_module
:使用https
协议模块。默认情况下,该模块没有被构建。前提是openssl
与openssl-devel
已安装--with-http_stub_status_module
:用来监控 Nginx 的当前状态--with-http_realip_module
:通过这个模块允许我们改变客户端请求头中客户端 IP 地址值(例如X-Real-IP
或X-Forwarded-For
),意义在于能够使得后台服务器记录原始客户端的 IP 地址--add-module=PATH
:添加第三方外部模块,如nginx-sticky-module-ng
或缓存模块。每次添加新的模块都要重新编译
启动、停止 Nginx
groupadd -f www-datauseradd -g www-data www-data # 启动 nginx 服务/usr/local/nginx/sbin/nginx # 查看进程ps -ef | grep nginxroot 37755 1 0 12:16 ? 00:00:00 nginx: master process sbin/nginxwww-data 37756 37755 0 12:16 ? 00:00:00 nginx: worker processroot 37758 30529 0 12:16 pts/1 00:00:00 grep --color=auto nginx # 停止 nginx 服务/usr/local/nginx/sbin/nginx -s stop
Nginx 验证
- 启动后 ,在浏览器中 输入服务器的 ip 地址,就可以看到
- 查看日志
cd /usr/local/nginx/logs ls -altotal 12drwxr-xr-x 2 root root 58 May 9 12:16 .drwxr-xr-x 11 root root 151 May 9 12:16 ..-rw-r--r-- 1 root root 435 May 9 12:18 access.log-rw-r--r-- 1 root root 329 May 9 12:18 error.log-rw-r--r-- 1 root root 6 May 9 12:16 nginx.pid tail -20f access.log192.168.111.31 - - [09/May/2020:12:18:17 -0400] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36"192.168.111.31 - - [09/May/2020:12:18:18 -0400] "GET /favicon.ico HTTP/1.1" 404 571 "http://192.168.111.238/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36"192.168.111.31 - - [09/May/2020:12:19:54 -0400] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36"
下一步计划
Beats 采集数据