空主机头
Nginx关闭默认站点/空主机头(禁止IP直接访问、防止域名恶意解析)
server {
listen 80 default;
return 500;
}
日志切割
mkdir /usr/local/nginx/logs/oldlogs
vim /home/nginx.sh
#!/bin/bash
LOG_PATH=/usr/local/nginx/logs/oldlogs
CUR_LOG_PATH=/usr/local/nginx/logs
YESTERDAY=$(date +%F -d -1day)
logfile=(access.log error.log )
i=0
while [[ i -lt ${#logfile[@]} ]];
do
mv $CUR_LOG_PATH/${logfile[i]} $LOG_PATH/${YESTERDAY}_${logfile[i]}
let i++
done
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
find $LOG_PATH -name *.log -mtime +30 -exec rm -rf {} \;
给与权限并加入每天0点执行:
(killall nginx非必须)
chmod +x /home/nginx.sh
vim /var/spool/cron/root
0 0 * * * /bin/bash /home/cutnginx.sh &>/dev/null
404页面
修改主配置文件
server{error_page 404 /404.html;
location = /404.html {
root /liuyijing;
}}
vim /liuyijing/404.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>404</title>
</head>
<body style="background-color:greeb">
<h1>访问地址写错啦</h1>
<p>或者是网站走丢了...</p>
</body>
</html>
systemctl restart nginx
多站点
vim /usr/local/nginx/conf/nginx.conf
只需要在http{模块中加入添加即可
server {
listen 8081 default_server;
server_name liuyijing.com;
return 500;
location / {
root /liuyijing;
index index.html ;
}
error_page 404 /404.html;
location = /404.html {
root /liuyijing;
}
}
或者include /etc/nginx/conf.d/*.conf;
把conf文件放在你指定的位置即可
nginx基本优化
vim /usr/local/nginx/conf/nginx.conf
worker_processes 1;按照你的cpu核数修改1
events {
worker_connections 1024; 1024改成10240或者65535
}
连接状态
请写在server中
server{
location /nginx_status {
stub_status;
allow all;
}
}
systemctl restart nginx
http://192.168.184.156/nginx_status
Active connections: 22 当前活动的连接数
server accepts handled request 服务器接受处理请求
17 17 24
17 总连接数connection(TCP) TCP三次握手/四次断开
17 成功的连接数connection (TCP) 失败连接=(总连接数-成功连接数)
24 总共处理的请求数requests(HTTP)
connection 连接数,tcp连接
requests http请求,GET/POST/DELETE/UPLOAD
Reading: 2 读取客户端Header的信息数 请求头
Writing: 1 返回给客户端的header的信息数 响应头
Waiting: 19 等待的请求数,开启了keepalive(长连接设置)
keepalive_timeout 65(或者0,代表65秒4次断开); 百度家是120
随机主页:
将主页设置成随机页面,是一种微调更新机制。能保护用户粘性
创建多个主页html server中开启 random_index on;
替换模块:
一般不用,了解有这个技术就行
文件读取:
统称:ngx_http_core_module
sendfile
使用 sendfile() 来进行网络传输的过程:
硬盘 >> kernel buffer (快速拷贝到kernelsocket buffer) >>协议栈
sendfile() 不但能减少切换次数而且还能减少拷贝次数。
tcp_nopush
使用tcp_nopush()网络传输效率提升,当包累计到一定大小后再发送。
tcp_nodelay
这个选项仅在将连接转变为长连接的时候才被启用。
TCP_NODELAY是禁用Nagle算法,即数据包立即发送出去。
sendfile on;
tcp_nopush on;