nginx配置文件相关

内容概述

1.nginx之前回顾
-1.1 三种安装方式
-1.2 nginx 相关文件
2.nginx虚拟主机
-2.1 虚拟主机方式
-2.2 基于多ip的方式
-2.3 基于多域名的方式
-2.4 基于多端口的方式
-2.5 总结
3.nginx日志配置
-3.1 日志配置
-3.2 nginx日志

内容详细

1.nginx之前回顾

1.1 三种安装方式

1.epol源安装
2.官方源安装(需要配置官方源)
3.源码包安装
	1)下载源码包
	2)解压源码包
	3)进入安装目录,生成二进制文件
	4)编译
	5)安装

1.2 nginx 相关文件

rpm -ql nginx 可以查看整体的目录结构以及对应的功能

1.2.1. nginx的主配置文件

路径 类型 作用
/etc/nginx/nignx.conf 配置文件 nginx主配置文件
/etc/nginx/conf.ddefault.conf 配置文件 默认网站配置文件

1.2.2. nginx编码相关参数文件

路径 类型 作用
/etc/nginx/win-utf 配置文件 nginx编码转换映射文件
/etc/nginx/koi-utf 配置文件 nginx编码转换映射文件
/etc/nginx/kol-win 配置文件 nginx编码转换映射文件
/etc/nginx/mime.types 配置文件 Content-Type与拓展名

1.2.3. nginx代理相关文件

路径 类型 作用
/etc/nginx/fastcgi_params 配置文件 Fastcgi代理配置文件
/etc/nginx/scgi_params 配置文件 scgi代理配置文件
/etc/nginx/uwsgi_params 配置文件 uwsgi代理配置文件

1.2.4. nginx管理相关命令

路径 类型 作用
/usr/sbin/nginx 命令 nginx命令行管理终端工具
/usr/sbin/nginx-debug 命令 nginx命令行与终端调试工具

1.2.5. nginx日志相关目录与文件

路径 类型 作用
/var/log/nginx 目录 nginx默认存放日志目录
/etc/logrotate.d/nginx 配置文件 nginx默认的日志切割

1.3nginx配置文件

1.Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的.一般,每个区块以一对大括号{}来表示开始与结束.
2.nignx主配置文件整体分为三块进行学习,分别是:
# CoreModule(核心模块)
# EventModule(事件驱动模块)
# HttpCoreModule(http内核模块)

配合文件的具体内容:
	1)核心模块:
# 指定启动的用户
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;
	2)事件驱动模块:
events {
    # 每个worker进程工作进程的最大连接数
    worker_connections  1024;
}
	3)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;
 
    # 一个server表示一个网站
    server {
        # 监听端口
        listen       80;
        # 网站提供的域名
        server_name  localhost;
        # 字符集
        charset utf8;
        # 匹配,控制访问的网站站点
        location / {
            # 指定站点目录
            root   /usr/share/nginx/html;
            # 指定默认访问的页面
            index  index.html index.htm;
        }
    }
}

2.nginx虚拟主机

2.1 虚拟主机方式

1.nginx虚拟主机?
	虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的.从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样.
2.虚拟主机能做什么?
	利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程.虚拟主机提供了在同一台服务器,同一组Nginx进程上运行多个网站的功能.
3.实现虚拟主机的三种方式:
	# 基于域名的虚拟主机
	# 基于端口的虚拟主机
	# 基于ip地址的虚拟主机

2.2 基于多ip的方式

ifconfig eth0:192.168.174.226/24
ip addr add 192.168.174.226/24 dev eth0
# 网卡添加子ip
# 配置第一个配置文件
cd /etc/nginx/conf.d
vim game1.conf
server {
        listen 192.168.174.226:80;
 
        location / {
                root /tmp/html5-mario;
                index index.html;
        }
}

# 配置第二个配置文件
vim game2.conf
server {
        listen 192.168.174.223:80;
 
        location / {
                root /tmp/html5-tank;
                index index.html;
        }
}
# 检查配置
nginx -t
# 重启服务
systemctl restart nginx

2.3 基于多域名的方式

# 配置第一个配置文件
cat /etc/nginx/conf.d/game1.conf
server {
    listen 80;
    server_name www.maliao.com;
 
    location / {
        root /tmp/html5-mario;
        index index.html;
    }
}
# 配置第二个配置文件
cat /etc/nginx/conf.d/game2.conf
server {
    listen 80;
    server_name www.tank.com;
 
    location / {
        root /tmp/html5-tank;
        index index.html;
    }
}
# 检查配置
nginx -t
# 重启服务
systemctl restart nginx

2.4 基于多端口的方式

# 第一个配置文件
cat /etc/nginx/conf.d/game1.conf
server {
    listen 8080;
    server_name localhost;
 
    location / {
    root /tmp/html5-mario;
    index index.html;
    }
}
# 第二个配置文件
cat /etc/nginx/conf.d/game2.conf
server {
    listen 8090;
    server_name localhost;
 
    location / {
    root /tmp/html5-tank;
    index index.html;
    }
}
# 检查配置
nginx -t
# 重启服务
systemctl restart nginx

2.5 总结

在nginx的虚拟主机类型中,基于域名的虚拟机应用最为广泛
1.基于端口和IP的虚拟主机类型,用户体验不好.
2.基于IP类型的虚拟主机,如在公网环境下使用,会产生额外费用.
3.基于域名的虚拟主机,一次付费,用户体验较好.
 
最后: 不管使用哪种虚拟主机,最终使用的都是本地主机现有资源.

3.nginx日志配置

3.1 日志配置

# 第一个配置
cat /etc/nginx/conf.d/game.conf 
server {
    listen 80;
    server_name www.maliao.com;
 
    access_log /var/log/nginx/www.maliao.com.log main;  # 访问日志以main格式存放到目标地址
 
    location / {
    root /code/tuixiangzi;
    index index.html;
    }
}
# 第二个配置
cat /etc/nginx/conf.d/gametwo.conf 
server {
    listen 80;
    server_name www.tank.com;
 
    access_log /var/log/nginx/www.tank.com.log main;  # 访问日志以main格式存放到目标地址
 
    location / {
    root /code/tank;
    index index.html;
    }
}
# 检查配置
nginx -t
# 重启服务
systemctl restart nginx
# 查看日志文件
ll /var/log/nginx/
total 104
-rw-r----- 1 nginx adm 54760 Aug 11 12:02 access.log
-rw-r----- 1 nginx adm   625 Aug 10 14:19 access.log-20210811
-rw-r----- 1 nginx adm 37009 Aug 11 12:02 error.log
-rw-r----- 1 nginx adm   265 Aug  9 23:33 error.log-20210811

总结:nginx运行优先遵循server内的配置,在遵循http,所以日志可以分类储存

3.2 nginx日志

nginx的日志记录模式非常灵活,每个级别的配置可以有各自独立的访问日志.日志格式可以通过log_format命令定义格式.

1nginx服务器日志相关指令主要有两条
	1.一条是log_format,用来设置日志格式.
	2. 另外一条是access_log,用来指定日志文件的存放路径,格式和缓存大小,一般在nginx的配置文件中日志配置(/usr/local/nginx/conf/nginx.conf).

3.2.1.日志格式

1.access_log 指令:
	access_log path [format [buffer=size [flush=time]]];
access_Log path format gzip[=level] [buffer=size] [flush=time];
access_log syslog:server=address[,parameter=value] [format];
access_log off;
默认值: access_log logs/access.log combined;
默认值:http,server,location,if in location, limit_except

gzip 压缩等级.
buffer 设置内存缓存区大小.
flush  保存在缓存区中的最长时间
不记录日志: access_log off
使用默认combined 格式记录日志: access_log logs/access.log 或 access_log logs/access.log combined

2.log_format指令
语法: log_format name string ...;
默认值: log_format combined "...";
配置段: http
name 表示格式名称,string 表示等义的格式.log_format 有一个默认的无需配置的combined日志格式,相当于apache的combined日志格式,如下所示:
Syntax: log_format name [escape=default|json|none] string ...;
Default:    log_format combined "...";
Context:    http

3.2.2日常常用变量

$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地址和客户端请求的服务器地址.

3.2.3日志切割

# vim /etc/logrotate.d/nginx 
# 指定要切割的日志
/var/log/nginx/*.log {
 
        daily   # 每天切割日志
        missingok   # 忽略日志丢失
        rotate 52   # 日志保留时间 52天
        compress   # 日志压缩
        delaycompress  # 延时压缩
        not if empty    # 不切割空日志
        create 640 nginx adm    # 切割好的日志的权限
        sharedscripts   # 开始执行脚本
        postrotate  # 标注脚本内容
                if [ -f /var/run/nginx.pid ]; then	# 判断nginx启动
                        kill -USR1 `cat /var/run/nginx.pid`   # 重新生成一个access.log文件
 
                fi
        endscript   # 脚本执行完毕
}
posted @ 2021-08-11 21:07  堇雪月寒风  阅读(55)  评论(0编辑  收藏  举报
Live2D