nginx配置文件编写及日志文件相关操作
nginx配置文件编写及日志文件相关操作
nginx主配置文件扩展详解
http server location扩展了解项
http{}层下允许有多个Server{}层,一个Server{}层下又允许有多个Location
http{}标签主要用来解决用户的请求与响应。
server{} 标签主要用来响应具体的某一个网站。
location{}标签主要用于匹配网站具体URL路径
部署nginx网站
1.编写nginx虚拟主机配置文件
# 创建虚拟主机配置文件,根据主配置文件中include{}模块指定的虚拟主机配置文件路径创建
[root@web02 ~]$ vim /etc/nginx/conf.d/game.wj.com.conf
server{
# 监听80端口
listen 80;
# 指定访问的域名
server_name game.wj.com;
# 配置URL
location / {
# 站点目录
root /code/h5_games;
# 指定主页面
index index.html;
}
}
2.创建出对应的站点目录
[root@web02 ~]$ mkdir /code
3.修改站点目录权限
[root@web02 ~]# chown nginx.nginx /code
4.部署代码
# 下载代码至当前目录
wget http://test.driverzeng.com/Nginx_Code/h5_games.zip
# 移动代码文件至/code
mv h5_games.zip /code/
5.解压代码
unzip h5_games.zip
[root@web02 /code]$ ll
total 18856
drwxr-xr-x 6 root root 108 May 3 2019 h5_games
-rw-r--r-- 1 root root 19304923 May 3 2019 h5_games.zip
6.重新加载nginx的配置文件
[root@web02 /code]$ systemctl reload nginx
**7.本地域名解析 **
windows打开:C:\Windows\System32\drivers\etc\hosts文件
写入:10.0.0.8 game.drz.com
8.打开浏览器:http://game.drz.com
注意事项
1.nginx主配置文件的内容是从上到下进行读取的,企业中一般都用域名访问,以避免端口冲突
2.nginx配置文件的读取顺序是:主配置文件--->虚拟主机配置文件
在/etc/nginx/conf.d/下的虚拟主机配置文件,会按从上至下的顺序进行读取
3.nginx配置文件编写时必须以分号(;)表示一行的结尾
Nginx虚拟主机
nginx配置虚拟主机的三种方式
1.基于IP方式
利用多块网卡(多个IP)避免端口冲突
2.基于端口方式
没有域名时,主站点配置文件默认80,那么其他虚拟主机配置文件的监听端口号就得更改,影响用户体验
3.基于域名方式
多个域名不会存在端口冲突
nginx日志管理
日志格式详解
# 虚拟机主配置文件中的日志格式设置
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
定义了我们日志信息的格式
# main:日志的格式名称
Nginx日志格式中允许包含的内置变量
$remote_addr # 远端的IP地址,上一层地址(很有可能是代理IP)
$remote_user # 记录客户端用户名
$time_local # 记录通用的本地时间
$time_iso8601 # 记录ISO8601标准格式下的本地时间
$request # 记录请求的方法以及请求的http协议
$status # 记录请求状态码(用于定位错误信息)
$body_bytes_sent # 请求主体字节数,不包括响应头的大小
$bytes_sent # 发送给客户端的总字节数
$msec # 日志写入时间。单位为秒,精度是毫秒。
$http_referer # 记录从哪个页面链接访问过来的
$http_user_agent # 记录客户端(浏览器)相关信息
$http_x_forwarded_for #记录客户端IP地址
$request_length # 请求的长度(包括请求行, 请求头和请求正文)。
$request_time # 请求花费的时间,单位为秒,精度毫秒
$http_x_forwarded_for #代理服务器将用户IP和代理IP一并传递(一个用户IP+代理IP)
# 注:如果Nginx位于负载均衡器,nginx反向代理之后, web服务器无法直接获取到客户端真实的IP地址。
# $remote_addr获取的是反向代理的IP地址。 反向代理服务器在转发请求的http头信息中,
# 增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址
tail -f /var/log/nginx/access.log
10.0.0.1 - - [17/Jul/2021:15:41:26 +0800] "GET /favicon.ico HTTP/1.1" 404 555
"http://10.0.0.8/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36" "-"
自定义日志格式
# 定义日志格式
log_format 日志格式名称
# 调用日志格式到哪个路径
access_log 日志文件打印存放路径 调用的日志格式
# 不打印日志,没有指定关闭日志打印时会打印至默认的日志路径,再把主配置文件的日志打印关闭就不会再打印日志
log_format off;
配置的日志格式可以都放在主配置文件中,但是调用日志格式时,最好写在相应的虚拟主机配置文件中
写日志的打印路径时,如果写相对路径,就是在/var/log/nginx这个路径中
日志切割
使用logrotate切割日志
logrotate是一个系统自带的日志切割服务,但是需要yum安装的才自带,源码安装需要自己配置日志切割文件
# 查看被切割的日志类型
[root@web02 ~]$ ll /etc/logrotate.d
total 24
-rw-r--r--. 1 root root 91 Apr 11 2018 bootlog
-rw-r--r-- 1 root root 194 Nov 16 2020 httpd
-rw-r--r-- 1 root root 351 May 25 21:30 nginx
-rw-r--r--. 1 root root 224 Oct 30 2018 syslog
-rw-r--r--. 1 root root 100 Oct 31 2018 wpa_supplicant
-rw-r--r--. 1 root root 103 Nov 5 2018 yum
[root@web02 ~]$ vim /etc/logrotate.d/nginx
# 需要切割的日志(这里是所有以.log结尾的日志文件)
/var/log/nginx/*.log {
# 每天切割
daily
# 忽略丢失日志
missingok
# 日志保留52天
rotate 52
# 日志文件进行压缩
compress
# 延迟压缩
delaycompress
# 注意空日志,出现空日志就不切割
notifempty
# 日志文件的权限 属主 属组
create 640 nginx adm
# 共享的脚本
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
# 重新加载nginx配置文件:
kill -10 nginx服务的pid号
kill -USR1 `cat /var/run/nginx.pid`
fi endscript}
true命令:只是一个执行命令动作,不会有任何输出
date -s命令:修改系统时间,date -s '指定的时间'
使用fpm打包
需要在没有安装nginx时进行操作
1.获取fpm工具
[root@web01 ~]$ wget http://test.driverzeng.com/other/fpm-1.3.3.x86_64.tar.gz
2.安装Ruby语言环境
[root@web01 ~]$ yum -y install ruby rubygems ruby-devel
3.解压fpm工具
[root@web01 ~]$ tar xf fpm-1.3.3.x86_64.tar.gz
[root@web01 ~]$ ll
total 2576
-rw-r--r-- 1 root root 15360 Jun 27 2016 arr-pm-0.0.10.gem
-rw-r--r-- 1 root root 88064 Jun 27 2016 backports-3.6.8.gem
-rw-r--r-- 1 root root 21504 Jun 27 2016 cabin-0.8.1.gem
-rw-r--r-- 1 root root 29184 Jun 27 2016 childprocess-0.5.9.gem
-rw-r--r-- 1 root root 24576 Jun 27 2016 clamp-0.6.5.gem
-rw-r--r-- 1 root root 881664 Jun 27 2016 ffi-1.9.10.gem
-rw-r--r-- 1 root root 114176 Jun 27 2016 fpm-1.3.3.gem
-rw-r--r-- 1 root root 1288103 Jul 14 2016 fpm-1.3.3.x86_64.tar.gz
-rw-r--r-- 1 root root 152064 Jun 27 2016 json-1.8.2.gem
4.查看gem源
[root@web01 ~]$ gem source list
*** CURRENT SOURCES ***
# 国外网站,国外的源
https://rubygems.org/
5.追加阿里云的gem源
[root@web01 ~]$ gem sources -a http://mirrors.aliyun.com/rubygems/
6.删除国外源
[root@web01 ~]$ gem sources --remove https://rubygems.org/
7.安装fpm工具
[root@web01 ~]$ gem install *.gem
PS:一次不行就再安装一次
# 删除fpm所有的gem包
[root@web01 ~]$ rm -rf ./*
8.存储nginx的依赖包
# 指定下载存放至/tmp下
[root@web01 ~]$ yum install -y openssl-devel pcre-devel zlib-devel --downloadonly --downloaddir=/tmp
9.将下载到/tmp目录下的依赖包一并压缩打包
[root@web01 /tmp]$ cd /tmp/
[root@web01 /tmp]$ tar zcf nginx_rpm.tar.gz *.rpm
10.源码安装nginx
11.编写一个打包的脚本文件
vim rpm_nginx.sh
#!/bin/bash
groupadd www -g 666
useradd www -u 666 -g 666 -s /sbin/nologin -M
echo '
[Unit]
Description=nginx - high performance web server Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
ExecStart=/app/nginx/sbin/nginx
ExecReload=/app/nginx/sbin/nginx -s reload
ExecStop=/app/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target' > /usr/lib/systemd/system/nginx.service
ln -s /app/nginx-1.20.1 /app/nginx
12.执行打包命令进行打包
[root@web01 ~]$ fpm -s dir -t rpm -n nginx -v 1.20.1 -d 'pcre-devel,openssl-devel,zlib-devel' --post-install /root/rpm_nginx.sh -f /app/nginx-1.20.1
-s:指定打包的是目录还是文件
-t:打成什么类型的包,这里是rpm包
-n:指定打包后的名称
-v:打包的版本
-d:指定依赖包有哪些
--post-install:在安装之前需要执行的脚本
可能需要的操作:
安装rpmbuild命令
yum install -y rpmbuild-devel
打包完成后安装nginx时,直接yum安装打好的nginx的rpm包就可以
nginx配置文件编写及日志文件相关操作的更多相关文章
- NGINX按天生成日志文件的简易配置
NGINX按天生成日志文件的简易配置 0x01 最近后端童鞋遇到一个小需求,拆分nginx生成的log文件,最好是按天生成,看着她还有很多bug待改的状态,我说这个简单啊,我来吧.曾经搞node后端的 ...
- MySQL各类日志文件相关变量介绍
文章转自:http://www.ywnds.com/?p=3721 MySQL各类日志文件相关变量介绍 查询所有日志的变量 1 mysql> show global variables li ...
- Git基本命令 -- 基本工作流程 + 文件相关操作
可以先找一个已经被git管理的项目, 我就使用这个项目吧: https://github.com/solenovex/ID3-Editor 基本工作流程 克隆以后呢, 进入该目录查看一下状态: 然后添 ...
- python文件相关操作
Python文件相关操作 打开文件 打开文件,采用open方法,会将文件的句柄返回,如下: f = open('test_file.txt','r',encoding='utf-8') 在上面的代码中 ...
- log4j2配置文件动态指定日志文件名称
按照习惯性思维,log4j2中xml中取系统属性应该和log4j一样,但是结果却并不是我们想的这样,存在一定的差别,log4j中的配置可参考 log4j配置文件动态指定日志文件名称 . 现在就来看看到 ...
- VC++文件相关操作的函数封装实现
在开发编译工具中,需要用到文件的相关操作,于是就封装了相关的函数实现: //判断文件是否存在 BOOL FileIsExist(CString strFileName) { CFileFind fin ...
- mysql日志文件相关的配置【2】
1.二进制日志是什么? mysql 的二进制日志用于记录数据库上做的变更. 2.二进制日志什么时间写到磁盘 1.总的来说二进制日志会在释放锁之前就写入磁盘.也就是说在commit完成之前:client ...
- Spark处理日志文件常见操作
spark有自己的集群计算技术,扩展了hadoop mr模型用于高效计算,包括交互式查询和 流计算.主要的特性就是内存的集群计算提升计算速度.在实际运用过程中也当然少不了对一些数据集的操作.下面将通过 ...
- 【原创】Linux基础之gz文件相关操作
gz文件不需要解压即可进行相关操作 $ zcat test.log.gz $ zmore test.log.gz $ zless test.log.gz $ zgrep '1.2.3.4' test. ...
- Nodejs文件相关操作
欢迎关注我的博客我在马路边 适用人群 本文适用于刚接触Node的小白,毕竟我也是小白,大佬请绕行. Node文件操作 在实际开发中遇到很多有关文件及文件夹的操作,比如创建.删除文件及文件夹,文件拷贝. ...
随机推荐
- Qt 5.15.2 QTextEdit无法设置新字体的处理方式
首发于我的个人博客:xie-kang.com 博客内有更多文章,欢迎大家访问 原文地址 在使用QT 5.15.2 开发的过程中碰到了件怪事,下列代码无法给QTextEdit选中的文字设置字体: QTe ...
- QImageReader(Writer)支持格式变少的解决方法
首发于我的个人博客:xie-kang.com 博客内有更多文章,欢迎大家访问 原文地址 获取程序支持的图片格式: #include "mainwindow.h" #include ...
- adb命令1
adb是什么 adb的全称为Android Debug Bridge,就是起到调试桥的作用.它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互. adb有什么用 借助adb工具,我们可以 ...
- Tcp网络模型
要摸清网络,那么第一步肯定是要清楚网络协议的分层结构,用上帝视角来看网络. 对于同一台设备上的进程间通信,有很多种方式,比如有管道.消息队列.共享内存.信号等方式,而对于不同设备上的进程间通信,就需要 ...
- Python学习笔记--序列+集合+字典
序列 切片:从一个序列中,取出一个子序列 注意: 案例: 实现: 集合 无序性.唯一性 添加新元素: .add 移除元素: .remove 随机取出某个元素: 清空集合: .clear 取两个集合的差 ...
- 数据库相关知识点整理,助力拿到心仪的offer
1. 数据库的事务 1.1 什么是数据库事务? 事务是指一组逻辑上相关的操作,这些操作要么全部完成,要么全部不完成. 事务是数据库管理系统执行过程中的一个逻辑工作单位,是用户定义的一个操作序列,这些操 ...
- DevOps, HybridOps and AIOps浅谈
DevOps, HybridOps and AIOps浅谈 DevOps的概念出现比较久了,很多的IT项目也都在实际的运用中.AIOps概念作为DevOps的升级版,也得到了很广大的关注,也出现了很多 ...
- 中英文拼写检测纠正开源项目使用入门 word-checker 1.1.0
项目简介 word-checker 本项目用于单词拼写检查.支持英文单词拼写检测,和中文拼写检测. 特性说明 可以迅速判断当前单词是否拼写错误 可以返回最佳匹配结果 可以返回纠正匹配列表,支持指定返回 ...
- R语言文本数据挖掘(四)
文本分词,就是对文本进行合理的分割,从而可以比较快捷地获取关键信息.例如,电商平台要想了解更多消费者的心声,就需要对消费者的文本评论数据进行内在信息的数据挖掘分析,而文本分词是文本挖掘的重要步骤.R语 ...
- 开源项目audioFlux: 针对音频领域的深度学习工具库
目录 时频变换 频谱重排 倒谱系数 解卷积 谱特征 音乐信息检索 audioFlux是一个Python和C实现的库,提供音频领域系统.全面.多维度的特征提取与组合,结合各种深度学习网络模型,进行音频领 ...