Nginx 配置文件、虚拟主机、日志文件、缓存和其他配置

本篇概要:

  • 1. Nginx 配置文件总览;
  • 2. Nginx 虚拟主机配置;
  • 3. Nginx 日志和文件配置;
  • 4. Nginx 缓存配置和其它配置。

1. Nginx 配置文件总览;

  • Nginx服务器搭建好后,要想实现更强大的功能,就要对其进行配置。
# 进入 Nginx 配置文件夹
cd /usr/local/nginx/conf/
vim nginx.conf
# nginx.conf 是 nginx 自带的配置文件名

## nginx.conf  详解
#user nobody
# 设置使用用户。user 后面代表能够使用 nginx 的用户群。
# nobody 是一个低权限的用户(为了安全设置的用户),其它用户无法编辑内容,提高 nginx 系统安全性。

worker_processes 1	#  工作衍生进程数
# 1 为进程数。数字代表 CPU 核数,也可以是 CPU 核数的两倍。注意:这里的工作衍生进程数不是越大越好

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
# 设置错误文件存放路径

#pid        logs/nginx.pid;
# 设置 pid 存放路径,是控制系统中一个重要文件,对 nginx 服务器进行控制(以 .pid 为结尾)。

events {
    worker_connections  1024;
}
# 设置最大的连接数。
# Nginx 服务器是支持高并发的,最大的并发数在这里设置。

http{
}
# 网页方面的信息

#gzip on
# 服务器是否支持开启 gzip 压缩。
# 如果没有开启 gzip 压缩,用户访问服务器的网页就按照原来文件的大小来进行传输。
# 如果开启,用户访问网页的时候,访问到的是压缩后的内容。
# 压缩过的网页文件是原来的 30% 甚至更小,大大提高传输速度。
  • 配置文件抽象(包含哪些部分)
# 不可缺少的部分(抽象出来的模型)
worker_processes  1;

events {
    worker_connections  1024;
}

http {
	server {
		
	}

}

2. Nginx 虚拟主机配置;

  • Nginx 虚拟主机配置步骤
    • 通常情况下,为了使每个服务器可以供更多用户使用,可以将一个服务器分成很多虚拟的子服务器,每个子服务器都是相互独立的使用、可以供一组用户使用。这不是通过硬件,而是根据虚拟化技术分出来的,这样一台服务器就可以虚拟成很多台子服务器。我们把子服务器就做虚拟主机。
    • 搭建好 Nginx 服务器之后,此时只有一台 Nginx 服务器,这时候如果我们队这台服务器进行虚拟主机配置,就可以将一台 Nginx 服务器分隔成多台独立的子服务器。
    • Nginx 中配置虚拟主机的步骤主要有两个。
    • 第一步是配置 IP 地址,也就是后续绑定 IP 地址与虚拟主机做一个前提的准备,也就是配置虚拟主机的 IP 地址。
    • 第二步是绑定 IP 地址与虚拟主机。比如配置的 192.168.1.216 是一个 IP 地址,这个 IP 地址在第二步的时候要与一个虚拟主机进行绑定。
  • IP 地址的配置
# 查看现在 IP 地址的信息
ifconfig	

# 配置(可选,如果看不到 IP 地址)
ifconfig hua-bridge 192.168.1.218 netmask 255.255.255.0

# 虚拟主机的 IP 配置
ifconfig xxx-bridge:1 192.168.1.220 broadcast 192.168.1.255 netmask 255.255.255.0	# 分设备1
ifconfig xxx-bridge:2 192.168.1.221 broadcast 192.168.1.255 netmask 255.255.255.0	# 分设备2

# 注意:在配置中,“xxx-bridge” 替换成服务器上的的网卡名字或者网桥的名字
# 如果需要永久生效,需要修改配置文件:/etc/sysconfig/network-scripts/ifcfg-xxx-bridge
# 然后 service network restart

  • Nginx 虚拟主机配置
    • 在配置好了 IP 地址之后,我们需要将对应的 IP 地址与对应的虚拟主机联系,这一步叫做虚拟主机配置。
# 进入 Nginx 配置文件夹
cd /usr/local/nginx/conf/
# 可以在 nginx.conf 里写虚拟主机的配置信息,但是不安全
# 因为一旦 nginx.conf 坏了,那么整台服务器就崩溃了 
# 所以在其它的配置文件中进行配置之后,直接再加载这个配置文件

# 新增虚拟主机配置文件
vim xunizhuju.conf
# 写入如下内容
user nobody;

worker_processes 4;

events {
	 worker_connections  1024;
}

http{

	server{
		listen 192.168.1.220:80;
		server_name 192.168.1.220;
		access_log logs/server1.access.log combined;	# 使用默认日志格式
		location / {
			index index.html index.htm index.php;
			root html/server1; 		# 根目录代表 nginx 安装目录,即为 /usr/local/nginx
		}
	}
	
	server{
		listen 192.168.1.221:80;
		server_name 192.168.1.221;
		access_log logs/server2.access.log combined;
		location / {
			index index.html index.htm index.php;
			root html/server2;
		}
	}
	
}

# 创建 虚拟主机代码文件夹
mkdir /usr/local/nginx/html/server1
mkdir /usr/local/nginx/html/server2
vim /usr/local/nginx/html/server1/index.html
# 写入如下内容
This is server1!

vim /usr/local/nginx/html/server2/index.html
# 写入如下内容
This is server2!

# 加载配置文件 xunizhuju.conf
pkill -9 nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/xunizhuji.conf

3. Nginx 日志和文件配置;

  • Nginx 日志文件格式配置
    • Nginx服务器在运行的时候,会有各种操作,这些关键的操作信息会记录到文件中,这些文件叫日志文件。
    • 日志文件的记录是有格式的,我们可以按照系统默认的格式去记录,也可以按我们自定义的格式去记录。
    • 可以使用 log_format 指令来设置 Nginx 服务器的日志文件的记录格式。
# 进入 Nginx 配置文件夹
cd /usr/local/nginx/conf/
vim nginx.conf
/log_format		// 查找关键字
#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  logs/access.log  main;

# log_format 				指令:去掉“#”号
# log_format 				后面 main 改成 combined,表示默认的格式:log_format combined ...
# $remote_addr:			客户端 ip 地址
# $remote_user:			客户端的用户名
# $time_local:				访问时间和时区
# $request:				请求的 url,用户访问的网址
# $status:					请求状态,请求中  / 请求完毕
# $body_bytes_sent:		服务器发送给客户端的字节数
# $http_referer:			原网页(用户从哪里来)
# $http_user_agent:		客户端的浏览器的信息
# $http_x_forwarded_for:	客户端的 ip 地址(类似 $remote_addr)

  • Nginx 日志文件储存路径配置
    • 日志文件在记录的时候,需要储存到磁盘上,储存的路径是可以配置的。通常通过 access_log 指令来配置 Nginx 的日志文件的存储路径
# 继续之前的演示
/access_log		// 查找关键字
#access_log  logs/host.access.log  main;
# access_log 指令:去掉“#”号
# main 改成 combined,表示默认的格式
# 日志的目录是从 /usr/local/nginx/ 开始的
# 关闭日志:access_log off;

  • Nginx 日志文件的切割
    • 为了使 Nginx 的日志文件存储更合理、有序,我们需要将日志文件进行分开储存,比如我们可以按时间来分开。
# 继续之前的演示
# 进入日志文件夹
cd /usr/local/nginx/logs/

# 1. 手动切割日志文件
# 移动日志文件
mv access.log 20190706.log
# 查看 Nginx 进程号
ps -ef | grep nginx
# 日志文件切割(xxx 为 Nginx 进程号)
kill -USR1 xxx

# 2. 自动切割(定时切割日志文件)
# 新建 P 处理文件
vim cutlog.sh
# 写入以下内容
D=$(date +%Y%m%d)
mv /usr/local/nginx/logs/access.log ${D}.log
kill -USR1 $(cat /usr/local/nginx/nginx.pid)

# 保存退出后给文件赋予执行权限
chmod 777 ./cutlog.sh

# 编写定时执行文件
crontab -e
# 输入如下内容
23 59 *** /bin/bash /usr/local/nginx/logs/cutlogs.sh

# 退出编辑后显示:Do you want to retry the same edit? 需要确定,输入 n

4. Nginx 缓存配置和其它配置。

  • Nginx 缓存配置详解
    • 当我们在浏览器中浏览网页时,我们会把该网页上的一些信息(比如网页上的图片)储存到本地,当我们第二次浏览该网页的时候,这个网页上的某些信息就可以从本地加载,这样速度就可以快很多。储存到本地的这些信息我们把其称之为缓存。
    • 但是缓存过多的时候,缓存文件就会非常大,影响我们正常的上网活动。所以缓存需要定期清理。在 Nginx 中,缓存是可以配置的。
# 进入配置文件夹
cd /usr/local/nginx/conf/
vim nginx.conf
# Nginx 的缓存信息是在服务器以及虚拟主机中配置
# 因为用户访问服务器是对应访问服务器中的其中一个网站,也就是访问其中一个虚拟主机
# 在配置文件的 http 的 server 里面配置,在 location 下面插入
location ~.*\.(jpg|png|swf|gif)$ {	# 后缀名
	expires 30d;	# 30 天自动清除
}
location ~.*\.(css|js)?$ {
	expires 1h;
}

  • Nginx 的其他配置 - 压缩功能配置
    • 这里提到的压缩功能指的是 gzip 压缩技术。通过 gzip 压缩技术,可以使原来的网页内容大小压缩成成原来的 30%,这样用户访问网站页面速度会快很多。
# 进入配置文件夹
cd /usr/local/nginx/conf/
vim nginx.conf
/gzip		// 查找关键字
#gzip on
# 去掉“#”,在之后添加如下内容
gzip_min_length 1k;		# 1k 以下页面不压缩
gzip_buffers 4 16k;		# 申请缓存资源(原网页压缩之后会存储在内存中,申请的内存大小)
gzip_http_version 1.1;	# gzip 识别的 http 版本
gzip_vary on;			# 判断客户端是否支持 gzip

  • Nginx 的其他配置 - 自动列目录配置
    • 当客户端通过浏览器访问服务器上某一文件夹的时候,如果该文件夹有默认的首页文件,比如 index.html,那么用户就会自动访问到 index.html 这个网页
    • 但是如果没有 index.html 这一类默认首页文件的时候,假设此时该文件夹还有其它文件,在没有配置自动列目录的功能的情况下,用户访问不到这个文件夹的内容。
    • 但当我们配置好了自动列目录的时候,我们就可以看到该文件夹下所有文件的一个列表,该列表目录是自动列的。
    • 实现自动列目录需要两个条件:访问的文件夹下不存在 index 之类的默认首页文件以及服务器配置了自动列目录功能。
# 进入配置文件夹
cd /usr/local/nginx/conf/
vim nginx.conf
# 在对应 server 的 location \ {} 里配置,写入
autoindex on
# 重启 nginx
killall -9 nginx	// 没有 killall 可以 yum install psmisc
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

你可能感兴趣的:(Linux,Nginx)