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包就可以

posted @ 2021-08-07 20:26  AnOldSong  阅读(1342)  评论(0编辑  收藏  举报