Nginx实践:(1) Nginx安装及日志配置
1. 安装
(1) Nginx下载地址:https://nginx.org/download/nginx-1.14.0.tar.gz
(2) 安装时可能出现依赖库不存在,比如prec包,可以使用yum install pcre pcre-devel进行安装。安装的整体命令如下:
cd /usr/local/src
# 下载
wget https://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14..tar.gz
cd nginx-1.14.
# 编译安装
./configure --prefix=/usr/local/nginx
make && make install
2. 启动
(1) 安装后,进入/usr/local/nginx可以看到如下目录:
a. conf: 配置文件
b. html: 网页文件
c. logs: 日志文件
d. sbin: 主要二进制程序
注意:启动时可能会遇到 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 异常,表示80端口已被占用,原因可能是先前已经安装了nginx、apache等,更多情况是操作系统自带了apache并作为服务启动。解决方法是将占用80端口的软件或服务关闭即可。
3. Nginx信号控制
(1) Nginx控制信号选项如下:
TERM, INT | 快速关闭 |
QUIT | 优雅关闭进程,即等待请求结束后再关闭 |
HUP | 配置文件更改后,平滑地重读配置文件 |
USR1 | 重读日志,在日志按月/日分割时有用 |
USR2 | 平滑地升级 |
WINCH | 优雅地关闭旧的进程(配合USR2来进行升级) |
具体命令格式:1) kill -信号选项 nginx的主进程号 或 2) kill -信号选项 `cat /your/path/log/nginx.pid`
例:
1) 快速关闭nginx:kill -INT `cat ./logs/nginx.pid`
2) 平滑重读配置文件:
a. 在nginx.conf中增加ab.html的配置(如下)
server {
listen ;
server_name localhost; access_log logs/host.access.log main; location / {
root html;
index ab.html index.html index.htm;
} error_page /50x.html;
location = /50x.html {
root html;
}
}
b. ab.html的内容如下:
<html>
only test for HUP
<script>
<!-- 链接赋值给自身,执行刷新操作 -->
window.location.href = "/";
</script>
</html>
c. 访问localhost,使用kill -HUP `cat ./logs/nginx.pid`重读配置文件,等待几秒,即可看到页面信息从"Welcome to nginx!"转换为"only test for HUP"页面信息
3) 重读日志:
a. 查看2)中配置的host.access.log,如果使用mv host.access.log host.access.log.bak,可以发现日志仍然会向host.access.log.bak文件中记录,原因是linux的文件指向的是Inode文件标识符,名称的改变并不能改变inode信息。
b. 使用kill -USR1 `cat ./logs/nginx.pid`,再访问localhost,即可发现日志不再向host.access.log.bak中写入,而向新建的host.access.log中写入
4. Nginx配置
Nginx配置段如下:
##### 全局区
# 有1个工作子进程,可以自行修改,但太大无益,因为要争夺CPU,一般设置为CPU数*核数
worker_processes ; events {
// 此处一般配置nginx连接的特性,如一个worker能同时允许多少链接
worker_connections ; // 一个子进程最大允许连1024个连接
} http {
// 此处是配置http服务器的主要段
include mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main;
sendfile on;
keepalive_timeout ; server {
// 此处为虚拟主机段
listen ; // 监听端口
server_name localhost; // 监听域名 access_log logs/host.access.log main; location / {
// 定位,把特殊的路径或文件再次定位,如image目录单独处理
root html; // 根目录定位
index ab.html index.html index.htm;
} error_page /50x.html;
location = /50x.html {
root html;
}
}
}
5. 日志管理
基于nginx配置文件,可以看到nginx的Server段包含"access_log logs/host.access.log main;"信息,其含义为该server的访问日志的文件是logs/host.access.log,使用的格式为"main"格式。除了"main"格式,也可以自定义格式。main格式的信息如下:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
main格式是我们定义好的日志格式,并起个名字,便于引用。
(1) 日志格式包含的选项:
a. $remote_addr是指远程地址
b. $remote_user是指远程用户
c. $time_local是指用户时间
d. $request是指请求方法,如GET/POST
e. $status是指请求状态,如200, 404
f. $body_bytes_sent是指请求体body长度
g. $http_referer是指referer来源信息,如上一级页面
h. $http_user_agent是指用户代理信息,如代理信息、浏览器信息等
i. $http_x_forwarded_for是指经过代理时,代理将本来的IP加在此头信息中,传输你的原始IP
(2) 自定义日志格式
自定义日志格式的形式为:log_format mylog '$remote_addr'。Nginx允许针对不同的server制定不同的日志格式(lighttp)。在server段,可以使用如下格式来记录该server对应的日志:
声明log log位置 log格式; 例如:access_log logs/access_8080.log mylog;
(3) 实际应用,定时按照日志存储某个server日志
run.sh脚本信息如下:
#!/bin/bash base_path='/usr/local/nginx/log'
log_path=$(date -d yesterday +"%d")
mkdir -p $base_path/$log_path
mv $base_path/access.log $base_path/$log_path/access_$day.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
crontab 定时任务:01 00 * * * /***/path/run.sh,即每天0时1分执行(建议在02-04点之间执行,系统负载较小)
Nginx实践:(1) Nginx安装及日志配置的更多相关文章
- Nginx实践01-ngnix编译安装-测试
1.下载nginx安装包 下载地址:http://nginx.org/en/download.html(里面有nginx各个版本) 解压到指定目录: 解压出来的目录简单介绍: src:软件的所有源代码 ...
- haproxy安装及日志配置
1.yum安装 yum install haproxy -y 2.配置文件修改,经典配置 vim /etc/haproxy/haproxy.cfg #------------------------- ...
- linux环境手动编译安装Nginx实践过程 附异常解决
1.下载nginx源码包并解压 可在http://nginx.org/en/download.html下载.tar.gz的源码包,如(nginx-1.4.7.tar.gz) 或者使用云盘下载 ht ...
- virtualBox安装centos7并配置nginx php mysql运行环境
virtualBox安装centos7并配置nginx php mysql运行环境 一:virtualBox安装centos7并进行基础设置 1.下载dvd.iso安装文件,下载地址:https:// ...
- Nginx反代服务器进阶学习最佳配置实践指南
转载自:https://www.bilibili.com/read/cv16150010?spm_id_from=333.999.0.0 0x00 编译实践 描述:在企业线上生产环境中推荐进行Ngin ...
- nginx(五)nginx与php的安装配置
经过前面学习,对nginx有个大概的了解,来配置LNMP;只要是在系统安装过程中选择安装比较齐全的包,基本上系统都能满足安装要求,下面是我一个一个测试的,基本上全部安装所需的库文件,放心安装: [ro ...
- Nginx - Windows下Nginx基本安装和配置
Nginx 是一个轻量级的高性能 Http WebServer,以事件驱动方式编写,因此相比 Apache 而言,Nginx 更加稳定.性能更好,而且配置简单,资源占用较低. 1. 安装 Nginx ...
- Nginx的安装及简单配置
Nginx安装 1.下载相关组件 yum install -y gcc gcc-c++ #安装C/C++编译器 yum -y ins ...
- Nginx 之一:编译安装nginx 1.8.1 及配置
一:基介绍 官网地址www.nginx.org,nginx是由1994年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯rambler.ru公司开发的,开发工作最早从2002年开始,第一次公开发布时间 ...
随机推荐
- android studio 程序员有福了—从layout自动生成viewholder类
狂点这里下载 超级牛逼的插件啊,比那些使用SparseArray的强太多了! 在android studio 1.0上测试,没有问题. 不说了直接说功能 Android Toolbox Plugin ...
- Gazebo学习随记2 SDF和XML
Model 模型 一个模型数据库会拥有的文件 database.config:有关数据库的元数据,从CMakeList自动填充『本地不需要』 model文件夹 一个模型[奏是辣个文件夹]会有的文件 m ...
- UWP&WP8.1 附加属性 和WebView的NavigateToString方法XAML绑定方法
附加属性,即为添加一个没有的属性的. 使用方法和依赖属性相似,个人理解就是特殊形式的依赖属性. 经常的用处,以一个简单的来说,比如一个控件的某一个属性我们想在XAML中给其绑定数据.但是我们在XAML ...
- JavaScript高级知识点整理
一.JS中的数组 1.数组的三种定义方式 (1).实例化对象 var aArray=new Array(1,2,3,4,5); (2).快捷创建 var aTwoArray = [1,2,3,&quo ...
- poj2409(polya 定理模板)
题目链接:http://poj.org/problem?id=2409 题意:输入 m, n 表示有 m 种颜色,要构造一个长度为 n 的手环,旋转和对称的只算一种,问能组成多少个不同的手环. 思路: ...
- ADX3000二层的负载均衡设计问题
我的想法是 想在现有的局域网内部,利用ADX划分出一个新的局域网,模拟负载均衡. 现在有三台试验机器,拓扑图如下: 各个机器IP设置如下图: 我进行了如下的操作: 1 在组网配置当中,设置eth1_0 ...
- Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
原文链接:https://blog.csdn.net/hq091117/article/details/79065199 https://blog.csdn.net/allen_tsang/artic ...
- 树状数组【bzoj3155】: Preprefix sum
3155: Preprefix sum 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3155 把给出的a_i当成查分数组d_i做就可以了 ...
- HDU - 6416 :Rikka with Seam(DP & 前缀和 & 数学)
pro:给定N*M的矩阵,现在让你在每一行删去一个位置,然后形成新N*(M-1)的矩阵,问有多少种不同的新的矩阵.需要满足相邻行删去的位置不大于K. (题目是01矩阵,其实任意矩阵都可以做,本题算法里 ...
- Linux系统centos中sudo命令不能用----提升权限
gyx is not in the sudoers file. This incident will be reported. 1.切换到root用户 su ,如果想要切换回去 exit 2.添加s ...