一、nginx基本配置
user nobody;
worker_processes 4; # 设置工作进程数,通常是cpu核数或者cpu核数的2倍
events{
worker_connections 1024; # 设置并发最大连接数
}
http{
server{
listen 80; #监听的端口,监听到后访问 html/server1这个地址
server_name 192.168.1.2; # 识别的域名
charset utf-8; # 设置url编码
access_log logs/server1.access.log combined; # off (关闭)
loction / # 虚拟主机本地根目录(两种匹配模式,普通字符串匹配和正则匹配)
{
index index.html index.htm # 默认的首页
root html/server1; # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1
}
location ^~ /test/ {
deny all; # 拒绝请求,返回403
(allow all;) # 允许请求
}
#syntax:location [=|~|~*|^~|@]/url/{...}
#无开头引导字符或以=开头表示普通字符串匹配
#以~或~*开头表示正则匹配,~*表示不区分大小写
#^~开头表示关闭正则匹配的功能,普通模式下匹配到后就不继续寻在正则
#@
}
error_page 404 /404.html; #定义各类错误类型
error_page 403 @page403; # 发生403错误时指向http://www.xxx.xxx.com页面
location @page403{
proxy_pass http://www.xxx.xxx.com
}
server{
listen 192.168.1.3:80 # 监听的IP地址
server_name 192.168.1.3 # 设置虚拟主机的名称
access_log logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined
loction /
{
index index.html index.htm
root html/server2; # IP地址与server2文件夹进行绑定
}
}
}
二、nginx日志文件配置
在nginx中conf中的nginx.conf有一段关于日志文件的配置
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
参数解析:
$remote_addr:客户端IP地址
$remote_user:客户端的用户名
$request:请求的url
$status:请求状态
$body_bytes_sent:记录nginx服务器返回给用户的字节数
$http_referer:客户访问的原网页(用户从哪里来)
$http_user_agent:客户浏览器访问信息,比如用户通过火狐浏览器浏览则记录火狐浏览器的类型信息
$http_x_forwarded_for:客户端IP地址
三、制作按时间切割日志文件的脚本
1.制作切割日志脚本cutlog.sh
D = $(data + %Y%m%d)
mv /usr/local/nginx/logs/access.log ${D}.log
kill -USR1 $(cat /usr/loacl/nginx/nginx.pid)
2.使用定时执行命令
(1)crontab -e 进入编辑
(2)输入 23 59 *** /bin/bash /usr/local/nginx/logs/cutlog.sh
# 每天23:59定时执行cutlog.sh这个脚本
(3)保存
四、nginx的缓存配置
浏览网页时,浏览器会把网页上的一些信息(图片)存储到本地,第二次浏览的时速度加快。若本地这些信息过多,缓存文件就会非常大,需要定期清理。
vim nginx.conf打开nginx的默认配置
user nobody;
worker_processes 4; # 设置工作进程数,通常是cpu核数或者cpu核数的2倍
events{
worker_connections 1024; # 设置并发最大连接数
}
http{
server{
listen 192.168.1.2:80 #监听这个IP地址,监听到后访问 html/server1这个地址
server_name 192.168.1.2
access_log logs/server1.access.log combined; # off (关闭)
loction / # 虚拟主机本地根目录
{
index index.html index.htm # 默认的首页
root html/server1; # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1
}
location ~.*\.(jpg|png|swf)${ # 所有以.jpg|.png|.swf结尾的文件
expires 30d; # 设置每30天自动清除
}
localtion ~.*\.(css|js)?${
expires 1h; # 设置每1h自动清除
}
}
server{
listen 192.168.1.3:80 # 监听的IP地址
server_name 192.168.1.3 # 设置虚拟主机的名称
access_log logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined
loction /
{
index index.html index.htm
root html/server2; # IP地址与server2文件夹进行绑定
}
}
}
五、nginx的压缩功能配置
nginx支持gzip压缩技术,通过这个技术,可以把网页的内容大小压缩成原来的30%。
vim nginx.conf
user nobody;
worker_processes 4; # 设置工作进程数,通常是cpu核数或者cpu核数的2倍
events{
worker_connections 1024; # 设置并发最大连接数
}
http{
server{
listen 192.168.1.2:80 #监听这个IP地址,监听到后访问 html/server1这个地址
server_name 192.168.1.2
access_log logs/server1.access.log combined; # off (关闭)
gzip on; # 开启gzip压缩功能
gzip_min_length 1k; # 文件大小大于1k才压缩
gzip_buffers 4 16k; # 申请用于缓存的内存大小为4个16k的数据流
gzip_http_version 1.1 # 声明只有http版本为1.1的网页开启gzip压缩功能
gzip_vary on; # 开启判断客户端浏览器是否支持gzip压缩功能
loction / # 虚拟主机本地根目录
{
index index.html index.htm # 默认的首页
root html/server1; # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1
}
location ~.*\.(jpg|png|swf)${ # 所有已.jpg|.png|.swf结尾的文件
expires 30d; # 设置每30天自动清除
}
localtion ~.*\.(css|js)?${
expires 1h; # 设置每1h自动清除
}
}
server{
listen 192.168.1.3:80 # 监听的IP地址
server_name 192.168.1.3 # 设置虚拟主机的名称
access_log logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined
loction /
{
index index.html index.htm
root html/server2; # IP地址与server2文件夹进行绑定
}
}
}
六、nginx的自动列目录配置
当客户端通过浏览器访问服务器上的某一文件夹的时候,如果该文件夹有默认的首页文件index.html,那么用户就会自动访问到index.html这个网页.实现自动列目录需要的条件:1.访问文件夹下不存在index之类的默认首页文件 2.服务器配置了自动列表功能。
user nobody;
worker_processes 4; # 设置工作进程数,通常是cpu核数或者cpu核数的2倍
events{
worker_connections 1024; # 设置并发最大连接数
}
http{
server{
listen 192.168.1.2:80 #监听这个IP地址,监听到后访问 html/server1这个地址
server_name 192.168.1.2
access_log logs/server1.access.log combined; # off (关闭)
loction / # 虚拟主机本地根目录
{
index index.html index.htm # 默认的首页
root html/server1; # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1
autoindex 0n; # 开启自动列目录
}
}
server{
listen 192.168.1.3:80 # 监听的IP地址
server_name 192.168.1.3 # 设置虚拟主机的名称
access_log logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined
loction /
{
index index.html index.htm
root html/server2; # IP地址与server2文件夹进行绑定
}
}
}
配置后即使nginx虚拟主机的安装目录/usr/local/nginx/html/server1下没有index.html或index.htm也可以返回整个目录结构,而不是403
六、nginx的优化
阻塞和非阻塞网络模型
同步阻塞模型,一请求一进程,当进程(线程)增加到一定程度后,更多CPU时间浪费到切换,性能下降,负载率不高,nginx是基于事件爱你的非阻塞多路复用模型,一个进程可以在短时间响应大量的请求。
user nobody;
worker_processes 4; # 设置工作进程数,通常是cpu核数或者cpu核数的2倍
worker_rlimit_nofile 655350; # 每进程最大可打开文件描述符数量(网络端口,设备,磁盘文件),用完后新的连接会产生502类错误
worker_connections 200000; # 每个工作进程的最大连接数(一般一个浏览器会同时打开两条连接,如果反向代理,nginx到后端服务器的连接也会占用连接数,静态服务器最大连接maxClient = worker_connections * worker_processes / 2,反向代理maxClient = worker_connections * worker_processes / 4)
use epoll; # 指明使用哪种网络模型epoll或kquene
worker_cpu_affinity 0001 0010 0100 1000 # 四核四进程,避免进程在cpu间切换的开销
events{
worker_connections 1024; # 设置并发最大连接数
}
http{
server{
listen 192.168.1.2:80 #监听这个IP地址,监听到后访问 html/server1这个地址
server_name 192.168.1.2
# access_log logs/server1.access.log combined; # off (关闭)
access_log off # 关闭可减少IO开销,但一般不建议
error_log logs/error.log crit # 只记录严重错误日志
sendfile on; # 启用内核复制模式,减少复制次数
keepalive_timeout 30s; # 降低每个连接的alive时间,可在一定程度上提高可响应连接数,一般可适当降低
gzip on; # 启动内容压缩,有效降低网络流量
gzip_min_length 1000; # 过短的内容压缩效果不佳,压缩过程会浪费系统资源
gzip_comp_level 4; # 可选0~9,压缩级别越高,压缩率越高,对系统性能要求越高
gzip_type text/plain text/css application/json # 压缩内容类别
open_file_cache max=655350 inactive=20s; # 静态文件缓存(最大缓存数量,文件为使用存活期),存放于内存
open_file_cache_valid 30s;# 验证缓存有效期时间间隔
open_file_cache_min_uses 2; # 有效期内文件最少使用次数
loction / # 虚拟主机本地根目录
{
index index.html index.htm # 默认的首页
root html/server1; # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1
}
}
server{
listen 192.168.1.3:80 # 监听的IP地址
server_name 192.168.1.3 # 设置虚拟主机的名称
access_log logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined
loction /
{
index index.html index.htm
root html/server2; # IP地址与server2文件夹进行绑定
}
}
}