NGINX是CPU亲和的,把每个worker进程固定在一个CPU上执行,减少切换CPU的cache miss,获得更好的性能。处理静态资源效率高的原因是采用了sendFile工作机制:文件从硬盘上读取到网络传输的过程不经过用户空间,也就是常说的零拷贝机制:

image.png
image.png
image.png
image.png

防盗链

主要是区分合法请求和非法请求,常用的解决方案有以下几种:

  1. 基于http_refer防盗链配置模块

url重写

网站维护的时候将所有页面重定向到维护页面:

rewrite ^(.*)$ /pages/maintain.html

301和302的区别:301是永久重定向,客户端会缓存重定向后的地址(即使服务器关闭也能跳转到对应的地址),302请求每次都会访问服务器。所以做重定向的时候最好选择302,301如果跳转的链接改了是无法及时更新的。

https优化:

  1. 激活keepalive长连接
  2. 设置ssl session缓存

所有的压缩算法对文本的压缩效率是最高的

nginx调优

文件描述符修改

/etc/security/limits.conf

# 针对用户配置
root soft nofile 65535
root hard nofile 65535
# 全局配置
* soft nofile 65535
* hard nofile 65535

soft和hard的区别,soft只是警告,而hard是会强制拒绝的。

基于nginx+lua的防火墙

image.png
image.png

https://github.com/loveshell/ngx_lua_waf

常用模块

  • http_stub_status_module:监控服务器运行状态
  • http_sub_module:http内容替换
  • http_access_module:基于ip的访问控制
  • http_auth_basic_module:基于用户的信任登录
  • http_secure_link_module:给服务器文件链接添加时间戳和校验码,从而保护服务器文件不被任意下载盗用