Nginx 搭建与部署 -03
nginx回顾
### 1.nginx 安装
1.epol源安装
2.官方源安装
3.源码包安装
1)下载
2)解压
3)生成
4)编译
5)安装
#### 2.nginx配置文件
[root@web01 ~]# cat /etc/nginx/nginx.conf
#########################核心模块####################
#指定启动的用户
user www;
#nginx的worker进程的数量
worker_processes 1;
#指定错误日志存放的路径以及记录的级别 (调试)debug/info/notice/warn/error/emerg
error_log /var/log/nginx/error.log warn;
#指定pid文件
pid /var/run/nginx.pid;
########################事件驱动模块#################
events {
#每个worker工作进程的最大连接数
worker_connections 1024;
}
######################http内核模块(网站模块)###################
http {
#包含,nginx可识别的文件类型
include /etc/nginx/mime.types;
#当nginx不识别文件类型的时候,默认下载
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 /var/log/nginx/access.log main;
#高效传输
sendfile on;
#高效传输
#tcp_nopush on;
#开启长连接
keepalive_timeout 65;
#开启压缩
#gzip on;
#包含网站的配置文件
include /etc/nginx/conf.d/*.conf;
[root@web01 ~]# vim /etc/nginx/conf.d/default.conf --- 下面是这个文件里面的内容
#一个server表示一个网站
server {
#监听端口
listen 80;
#网站提供的域名
server_name localhost;
#字符集
charset utf8;
#匹配、控制访问的网站站点
location / {
#指定站点目录
root /usr/share/nginx/html;
#指定默认访问的页面
index index.html index.htm;
}
}
Nginx虚拟主机
# 1.虚拟主机方式
1.基于多IP的方式 不推荐
命令添加多个子ip:
ifconfig eth0:1 10.0.0.8/24
ifconfig eth0:2 10.0.0.6/24
#*.conf游戏配置文件需加入此Ip地址
2.基于多端口的方式
ip不变,只更改*.conf游戏配置文件内的端口号
3.基于多域名的方式
ip不变,端口默认80,添加ip 域名到本地系统的hosts文件内:
C:\Windows\System32\drivers\etc\hosts
win键 + r 输入 drivers 在\etc\hosts里面添加
方式1:ip后跟多个域名
10.10.0.7 www.games.com www.mm.com
方式2:每条域名配一个ip
10.10.0.7 www.games.com
10.10.0.7 www.mm.com
基于多IP的方式 --> 不推荐
网卡添加子IP
百度访问:
### 10.10.0.7 域名
### 10.10.0.6 子网IP
地址 cat /etc/nginx/conf.d/*.conf
默认日志 tail -f /var/log/nginx/access.log
### 网卡添加子IP
[root@web01 ~]# ifconfig eth0:1 10.0.0.6/24
1、第一个配置文件
[root@web01 conf.d]# cat gamem.conf
server {
listen 10.10.0.7:80;
server_name localhost;
#server_name www.games.com;
location / {
root /mm/tanke;
index index.html;
}
}
2、第二个配置文件
[root@web01 conf.d]# cat xgame.conf
server {
listen 10.10.0.6:80;
server_name localhost;
#server_name www.mm.com;
location / {
root /mm/mofang;
index index.html;
}
}
3、检查配置
[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
4、重启访问
[root@web01 ~]# systemctl restart nginx
基于多端口的方式
百度访问:
### 10.10.0.7 域名
### 10.10.0.7:88 域名:端口88
地址 cat /etc/nginx/conf.d/*.
默认日志 tail -f /var/log/nginx/access.log
### 网卡添加子IP
[root@web01 ~]# ifconfig eth0:1 10.0.0.6/24
1、第一个配置文件
[root@web01 conf.d]# cat gamem.conf
server {
listen 10.10.0.7:80;
server_name localhost;
#server_name www.games.com;
location / {
root /mm/tanke;
index index.html;
}
}
2、第二个配置文件
[root@web01 conf.d]# cat xgame.conf
server {
listen 88; --> ##修改端口
server_name localhost;
#server_name www.mm.com;
location / {
root /mm/mofang;
index index.html;
}
}
3、检查配置
[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
4、重启访问
[root@web01 ~]# systemctl restart nginx
基于多域名的方式
百度访问:
### 10.10.0.7 www.games.com
### 10.10.0.7 www.mm.com
地址 cat /etc/nginx/conf.d/*.conf
默认日志 tail -f /var/log/nginx/access.log
1、第一个配置文件
[root@web01 conf.d]# cat gamem.conf
server {
listen 80;
#server_name localhost;
server_name www.games.com;
location / {
root /mm/tanke;
index index.html;
}
}
2、第二个配置文件
[root@web01 conf.d]# cat xgame.conf
server {
listen 80;
#server_name localhost;
server_name www.mm.com;
location / {
root /mm/mofang;
index index.html;
}
}
3、检查配置
[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
4、重启
[root@web01 ~]# systemctl restart nginx
5、配置本地hosts访问
#修改windows的hosts文件 --->切记保存
win键 + r 输入 drivers 在\etc\hosts里面添加
10.10.0.7 www.games.com www.mm.com
日志配置
1、第一个配置
[root@web01 conf.d]# cat gamem.conf
server {
listen 80;
#server_name localhost;
server_name www.games.com;
access_log /var/log/nginx/www.games.com.log main;
location / {
root /mm/tanke;
index index.html;
}
}
2、第二个配置
[[root@web01 conf.d]# cat xgame.conf
server {
listen 80;
#server_name localhost;
server_name www.mm.com;
access_log /var/log/nginx/www.mm.com.log main;
location / {
root /mm/mofang;
index index.html;
}
}
3)重启访问测试
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 ~]# systemctl restart nginx
[root@web01 conf.d]# ll /var/log/nginx/
total 36
-rw-r----- 1 nginx adm 31475 Mar 31 10:39 access.log
-rw-r----- 1 nginx adm 2971 Mar 31 10:45 error.log
-rw-r--r-- 1 root root 0 Mar 31 10:46 www.games.com.log
-rw-r--r-- 1 root root 0 Mar 31 10:46 www.mm.com.log
nginx 日志
Nginx有非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志。
日志格式通过log_format命令定义格式
nginx 日志语法
## 1.log_format语法
Syntax: log_format name [escape=default|json|none] string ...;
Default: —
Context: stream
#### 默认日志路径 /etc/nginx/nginx-conf
### [$time_local] 或者改成 [$time_iso8601]
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 /var/log/nginx/access.log main;
### 实际日志存放的地方
[root@web01 conf.d]# ll /var/log/nginx/
total 40
-rw-r----- 1 nginx adm 31475 Mar 31 10:39 access.log
-rw-r----- 1 nginx adm 2971 Mar 31 10:45 error.log
-rw-r--r-- 1 root root 207 Mar 31 10:47 www.games.com.log
-rw-r--r-- 1 root root 0 Mar 31 10:46 www.mm.com.log
公司常用日志格式
# /etc/nginx/nginx.conf
log_format access_json '{"@timestamp":"$time_iso8601",'
'"host":"$server_addr",'
'"clientip":"$remote_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamhost":"$upstream_addr",'
'"http_host":"$host",'
'"url":"$uri",'
'"domain":"$host",'
'"xff":"$http_x_forwarded_for",'
'"referer":"$http_referer",'
'"status":"$status"}';
access_log /var/log/nginx/access.log access_json;
$remote_addr # 记录客户端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地址 --------------
$X-Real-IP #记录起始的客户端IP地址和上一层客户端的IP地址 ------------
$request_length # 请求的长度(包括请求行, 请求头和请求正文)。
$request_time # 请求花费的时间,单位为秒,精度毫秒
# 注:如果Nginx位于负载均衡器,nginx反向代理之后, web服务器无法直接获取到客 户端真实的IP地址。
# $remote_addr获取的是反向代理的IP地址。 反向代理服务器在转发请求的http头信息中,
# 增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址。
[root@web01 conf.d]# cat /var/log/nginx/www.games.com.log
10.10.0.1 - - [31/Mar/2021:10:47:52 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.57" "-"
### [$time_local] 或者改成 [$time_iso8601]
10.10.0.1 - - [2021-03-31T11:13:24+08:00] ==> 修改时间改变 [$time_iso8601]
10.10.0.1 - - [31/Mar/2021:10:47:52 +0800] ==> 默认时间改变 [$time_local]
nginx日志切割
### 默认日志 vim /etc/logrotate.d/nginx
[root@web01 conf.d]# cat /etc/logrotate.d/nginx
#指定要切割的日志
/var/log/nginx/*.log {
daily #每天切割日志
missingok #忽略日志丢失
rotate 52 #日志保留时间 52天
compress #日志压缩 --压缩包
delaycompress #延迟压缩
notifempty #忽略空日志
create 640 nginx adm #切割好的日志的权限
sharedscripts #开始执行脚本
postrotate #标注脚本内容
if [ -f /var/run/nginx.pid ]; then
#重新生成一个access.log
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript #脚本结束
}
## 查看日志脚本是否正确
[ -f /var/run/nginx.pid ] && echo 1 || echo 0
正确为1,错误为0