文件压缩
ngx_http_gzip_module
启动该模块,使文件传输前进行压缩,提升传输效率。
启用压缩功能
http { 在http标签中启动该功能
gzip on;
gzip_http_version 1.1;
gzip_comp_level 5; 压缩等级 1-9
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_static on; nginx对于静态文件的处理模块systemctl restart nginx
页面缓存
无缓存,每次访问服务器,均是全文传输200/304。开启缓存可以加速浏览网站。
location ~.*\.(js|css|html|png|jpg)$
{
expires 1d;
}
防盗链
ngx_http_referer_module
日志格式中的http_referer是记录,访问点引用的URL。也就是超链接的上一级地址。
通过这段地址,可以发现一种网络行为——盗链。非法盗链会影响站点的正常访问。
通过http_referer模块可以控制这一点。防止非法盗链现象。
server {
listen 8081 ;
server_name liuyijing.com;
location / {
root /liuyijing;
index index.html ;
valid_referers none blocked *./liuyijing.com;
if ($invalid_referer) {
return 403;
}
}
合法盗链
在if后面加上 server_name 192.168.184.* ~\.google\. ~\.baidu\.想要的白名单即可
访问限制
请求频率限制:
ngx_http_limit_req_module
可以选择下载压测工具包
yum install -y httpd-tools
定义:
vim /etc/nginx/nginx.conf
http {
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s; 定义
限制请求 二进制地址 限制策略的名称 占用10M空间 允许每秒1次请求
server {
location / {
root html;
index index.html index.htm;
limit_req zone=req_zone; 引用
#limit_req zone=req_zone burst=5; 延迟请求不大于5
#limit_req zone=req_zone burst=5 nodelay; 直接返回503
}
}
}
启动请求频率限制
ab -n 100 -c 10 http:192.168.184.156
连接频率限制:
ngx_http_limit_conn_module 通过IP地址,限制链接(TCP)。
vim /etc/nginx/nginx.conf
http {
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
}
server {
location / {
...
limit_conn conn_zone 1;
}
}
单个IP,同时只允许有一个tcp连接
Nginx 访问控制
基于主机ip(白名单):
ngx_http_access_module
Context: http, server, location, limit_except
限制主机访问
server {
allow 192.168.192.156; 允许某些主机
deny all; 拒绝全部主机
}
基于用户(账号密码):
ngx_http_auth_basic_module
方法一
Syntax: auth_basic string | off;
Context: http, server, location, limit_except
方法二
Syntax: auth_basic_user_file file;
Context: http, server, location, limit_except
这里使用方法二:
建立认证文件
yum install -y httpd-tools 生成秘钥的工具是由apache提供
htpasswd -cm /etc/nginx/conf.d/passwd user1 会话密码
htpasswd -m /etc/nginx/conf.d/passwd user2 会话密码
cat /etc/nginx/conf.d/passwd 观察口令文件是否生成。已生成
user10:$apr1$UE/tLtDM$nVm686kAMYb/ArqQDUi8U/
user20:$apr1$bmn0E/gK$enkXKb2V5uFvUy9wdIHlP.
启动认证
server {
auth_basic "nginx access test!"; 提示消息
auth_basic_user_file /etc/nginx/conf.d/passwd; 引用认证文件
}