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