1分钟系列-Nginx 安装,准备访问日志

Posted by Yezhiwei on May 11, 2020

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 start
Starting nginx:                                [  OK  ]
停止 Nginx 服务
service nginx stop 
Stopping nginx:                                [  OK  ]
重启 Nginx 服务
service nginx restart
Stopping 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.gz
tar -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.gz
tar -zxvf pcre-8.38.tar.gz

# https://github.com/yaoweibin/nginx_upstream_check_module
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip
unzip master.zip -d /usr/local/src
下载并解压 Nginx
wget http://nginx.org/download/nginx-1.10.1.tar.gz
tar -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 协议模块。默认情况下,该模块没有被构建。前提是 opensslopenssl-devel 已安装

  • --with-http_stub_status_module : 用来监控 Nginx 的当前状态

  • --with-http_realip_module : 通过这个模块允许我们改变客户端请求头中客户端 IP 地址值(例如 X-Real-IPX-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的 IP 地址

  • --add-module=PATH : 添加第三方外部模块,如 nginx-sticky-module-ng 或缓存模块。每次添加新的模块都要重新编译

启动、停止 Nginx
groupadd -f www-data
useradd -g www-data www-data

# 启动 nginx 服务
/usr/local/nginx/sbin/nginx

# 查看进程
ps -ef | grep nginx
root     37755     1  0 12:16 ?        00:00:00 nginx: master process sbin/nginx
www-data 37756 37755  0 12:16 ?        00:00:00 nginx: worker process
root     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 -al
total 12
drwxr-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.log
192.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 采集数据