Nginx你是不是就只会简单部署应用和反向代理就不会了呢?来来来,这里有一份小技巧清单请你查收。
网站快速置灰
一些纪念日或者特殊事件时老板让你置灰网站,再也不用加班改代码了!
http {
sub_filter '</head>' '<style type="text/css">html {-webkit-filter: grayscale(.95);}</style></head>';
sub_filter_once on;
#......
}
不缓存HTML文件
部署前端应用,每次更新时通过不缓存HTML及时发现更新后的资源文件,实现无痛刷新,再也不用强制刷新浏览器了。
if ($request_filename ~* .*.(?:htm|html)$) ## 配置页面不缓存html和htm结尾的文件
{
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
}
服务器设置请求头
通过设置nginx允许跨域访问,不用改后端代码了,美滋滋。其它需要后端设置请求头的问题都可以交给Nginx解决。
# 允许跨域请求的域名,*代表所有
add_header 'Access-Control-Allow-Origin' *;
# 允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
# 允许请求的方法,例如:GET、POST、PUT、DELETE等,*代表所有
add_header 'Access-Control-Allow-Methods' *;
# 允许请求的头信息,例如:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent等,*代表所有
add_header 'Access-Control-Allow-Headers' *;
图片防盗链
像七牛云OSS服务的防盗链功能其实就是这样实现的
server {
listen 80; # 端口
server_name www.zhuifengren.cn; # 服务名,可以是IP地址或者域名
location / { # 根路径
root html; # 对应nginx安装目标下的html文件夹
index hello.html; # 指定首页为 hello.html
}
location ~* .(GIF|PNG|jpg|bmp|jpeg) { # *代表不区分大小写
# 校验请求是否来自于zhuifengren.cn这个站点,不是则返回404页面
valid_referers *.zhuifengren.cn;
if ($invalid_referer) {
return 404;
}
root /home/img;
}
error_page 500 502 503 504 /50x.html; # 指定这些状态码跳转的错误页
location = /50x.html {
root html;
}
}
设置长链接
通过设置长链接,我们可以优化请求中建立链接时耗费的时间或避免不必要的资源损耗。
upstream zhuifengren {
server 192.168.1.101:8080;
server 192.168.1.102:8080;
server 192.168.1.103:8080;
keepalive 50;
}
server {
listen 80;
server_name www.zhuifengren.cn;
location / {
proxy_pass http://zhuifengren;
proxy_http_version 1.1; #HTTP/1.1开始默认启用长链接
proxy_set_header Connection ""; #设置为Connection "close"将显示地关闭长链接
}
}
负载均衡策略
别忘了Nginx的口号之一就是负载均衡哦!
upstream zhuifengren {
# ip_hash; #以客户端的IP为依据匹配服务器
# hash $request_uri; #以客户端请求的URL为依据匹配服务器
least_conn; #匹配最少连接的服务器,即选中最闲服务器
server 192.168.1.101:8080;
server 192.168.1.102:8080;
server 192.168.1.103:8080;
}
如有更多的小技巧,欢迎评论区留言,我将持续补充哦~