一、nginx的配置文件总览
nginx.conf总览
#设置用户
#user nobody;
#设置衍生进程数
worker_processes 1;
#设置错误文件存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#设置pid存放路径(pid是控制系统中重要文件)
#pid logs/nginx.pid
#设置最大连接数
events {
work_connections 1024;
}
http {
include mine.types;
default_type application/octet-stream;
server {
}
}
二、nginx的虚拟主机配置
2.1、nginx的虚拟主机
通常情况下,为了使每个服务器可以供多个用户使用,可以将一个服务器分为很多虚拟的子服务器,每个子服务器都是相互独立的,这些服务器是根据虚拟化技术分出来的,这样,一台服务器就可以虚拟成很多服务器。我们把子服务器就做虚拟主机。我们搭建好nginx服务器,这时如果我们对这台服务器进行虚拟主机配置,就可以将一台nginx的服务器分割为多台独立的子服务器。nginx中配置虚拟主机的步骤有两个,第一步是配置ip地址,第二步,是绑定ip地址与虚拟主机。
2.2、ip地址的配置
2.2.1 输入ifconfig 查看网络设备 一般会有ech0 和 l0两个设备,可以查看设备的ip的地址
2.2.2 更改设备的ip地址 ifconfig eth0 192.168.1.9 netmask 255.255.255.0
2.2.3 输入ifcongig 查看eth0的ip已经变成192.168.1.9
2.3.4 给eth0配置虚拟主机,即配置设备的分设备
2.3.5 配置第一个分设备ifconfig eth0:1 192.168.1.7 broadcast 192.168.1.255 netmask 255.255.255.0 (broadcast 后的ip是ech0 的Bcast)
2.3.6 输入ifconfig查看结果
2.3.7 创建ech0的第二个分设备 ifconfig eth0:2 192.168.1.17 broadcast 192.168.1.255 netmask 255.255.255.0
2.3、nginx的虚拟主机的配置
2.3.1 在nginx/conf下创建新的.conf文件 使用touch xnzj.conf 创建xnzj.conf文件
2.3.2 vim xnzj.conf 编辑xnzj.conf 文件
user nobody;
worker_processes auto;
events{
worker_connections 1024;
}
http{
server{
listen 192.168.1.7:80;
server_name 192.168.1.7;
access_log logs/server1.access.log combined;
location /
{
index index.html index.htm;
root html/server1;
}
}
server{
listen 192.168.1.17:80;
server_name 192.168.1.7;
access_logs logs/server2.access.log conbined;
location /
{
index index.html;
root html/server2;
}
}
}
三、nginx日志文件配置
3.1、nginx日志文件格式的配置
3.1.1 nginx 日志格式使用log_format配置,默认系统默认配置
3.1.2 nginx的配置文件在conf/nginx.conf 的 http {} 中如下
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
3.2、nginx日志文件存储路径的配置
3.2.1 access_log 指令配置nginx的日志文件路径
3.2.2 access_log logs/access.log combined 将日志文件输入到logs/access.log
3.2.3 关闭日志输出 access_log off;
3.3、nginx日志文件的切割
3.3.1 手动切割(手动切割access.log)
3.3.1.1 mv access.log 20171029.log
3.3.1.2 kill -USR1 nginx主进程号
3.3.2 自动实现(crontab)
3.3.2.1 在logs目录下新建批处理文件cutlog.sh
touch cutlog.sh
3.3.2.2 编辑cutlog.sh
vim cutlog.sh
# 获取时间
D = $(date +%Y%m%d)
# 重命名日志文件呢
mv /usr/local/nginx/logs/access.log ${D}.log
# 通过信号控制切割日志文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
保存并退出
3.3.2.3 使用crontab命令定时执行cutlog.sh
crontab -e 编辑cutlog.sh 眼i编辑文件 每天23点59分切割日志文件
23 59 *** /bin/bash /usr/loacl/nginx/log/cutlog.sh
参考https://www.cnblogs.com/yaohong/p/9094951.html
http://www.pythondev.org/post/8.html
3.3.4使用logrotate切割nginx日志
3.3.4.1、新建touch nginx-log-rotate文件
cd /usr/local/nginx
touch nginx-log-rotate
vim nginx-log-rotate
/usr/local/nginx/logs/*.log {
compress
delaycompress
daily
copytruncate
create
notifempty
rotate 7
olddir /data/logs/nginx
missingok
dateext
postrotate
/bin/kill -HUP `cat /usr/local/nginx/logs/nginx.pid 2> /dev/null` 2> /dev/null || true
endscript
}
保存
新建旧日志存储目录
mkdir /data/logs/nginx
3.3.4.2、测试
/usr/sbin/logrotate -f /usr/local/nginx/nginx-log-rotate
查看/data/logs/nginx有无日志文件
3.3.4.3、使用过crontab定时启动(每天23时59分切割日志)
crontab -e
59 23 * * * /usr/sbin/logrotate -f /usr/local/nginx/nginx-log-rotate
:wq
3.3.4.4、nginx-log-rotate 配置文件说明
compress # 通过gzip压缩转储以后的日志
delaycompress # 和compress 一起使用时,转储的日志文件到下一次转储时才压缩
rotate 7 # 保存7天的日志
olddir /data/logs/nginx # 旧日志存储目录
postrotate # 通知nginx进程重写日志
/bin/kill -HUP `cat /usr/local/nginx/logs/nginx.pid 2> /dev/null` 2> /dev/null || true
endscript
四、ngin缓存配置
在conf目录下编辑nginx.conf
在 http server 在新建配置
# 设置图片缓存(缓存30天)
location `.*\.(jpg|png|swf|gif)${
expires 30d;
}
# 设置静态文件缓存(缓存一小时)
location `.*\. (css|js)$ {
expires 1h;
}
五、nginx压缩功能的配置(gzip压缩技术,压缩成30%左右,提高访问速度)
在conf下编辑nginx.conf 在http下配置
gzip on;
关闭gzip压缩
gzip off;(默认关闭)
配置压缩下线(对小文件不进行压缩)
gzip_min_length 1k;(压缩1k以上的文件)
在设置开启压缩后,压缩的结果发在内存中,所以还要设置申请缓存的大小
gzip_buffers 4 16k;(4个16k数据流)
设置gzip识别的版本
gzip_http_version 1.1;
自动判别客户端是否支持gzip压缩技术,支持则进行压缩,不支持就不进行压缩
gzip_vary on;
六、nginx自动列目录配置
当客户端通过浏览器访问服务器上的某一个文件夹时,如果该文件夹上有默认的首页文件,比如index.html那么此时用户就会自动访问到index.html这个网页。但是,当没有index.html这一类默认首页的文件的时候,假设此时该文件夹还有其他文件,在没有配置自动列目录的功能的情况下,用户访问不到我们这个文件夹的内容。但当我们配置好了自动列目录功能之后,我们就可以看到该文件夹下所有文件的一个列表,该列表目录是自动列的。实现自动列目录需要两个条件:
1、访问的文件夹下不存在index之类的默认首页文件。
2、服务器配置了自动列目录功能。
配置自动列目路 在conf下编辑nginx.conf在http server location / {} 中配置
autoindex on;