为什么要了解Nginx?
Nginx的配置代理的核心价值在于提供缓存、安全、负载均衡等综合能力
指令
1. log_format指令 ,用来自定义访问日志的记录格式,后面一般会跟随命名,这个一般是运维直接配置使用的,我们一般只作为消费者,比如接口响应时间过久的接口,用户设备人群具体是怎样的。
核心目的:当使用场景在多层代理或者负载均衡的场景中,需要准确记录真实的客户ip,以便于运维监控、安全审计和故障排查。
配置字段:
a.$remote_addr 记录客户端的ip,用了代理的话记录的就是代理地址而不是真实的用户ip。
b.$http_x_forwarded_for行业标准头部,记录请求经过的所有代理IP,也可以自定义内部的请求头,X-Forwarded-For可以拿到代理后的客户端的ip
c.$request记录请求方法和请求路径。
d.$status 与 $bytes_sent 响应状态码(如200、502)和发送给客户端的字节数,用于统计成功率与流量。
e.$http_referer 与 $http_user_agent请求来源页(如搜索引擎链接)和客户端浏览器/设备信息,用于分析用户行为和爬虫识别。
f.$gzip_ratio 响应内容的压缩率(如 75%),评估压缩策略效果。
g.$request_time 与 $upstream_response_time,$request_time:Nginx处理请求的总耗时(从接收到客户端请求到返回响。应),$upstream_response_time:后端服务器(如Tomcat、Node.js)处理请求的耗时,用于定位性能瓶颈。
结合$http_x_forwarded_for和$request字段识别SQL注入、CC攻击路径。
*** 总结:API性能调优、异常排查、用户行为分析、攻击溯源、合规审计、流量监控、资源优化都是依靠log_format指令直接或者间接实现的,间接的需要依赖其它工具哦,这里就不继续拓展了,我只是个小小的前端开发***
只记录目前生产项目配置的日志记录格式配置,对其他配置有兴趣的可以去其它文章了解。
2. server配置
核心目的:通过配置项灵活组合实现虚拟主机、反向代理、安全隔离、负载均衡、HTTPS、访问控制。
配置字段:
-
listen:监听端口和IP -
server_name:匹配域名 -
root:站点根目录(静态资源存放目录) -
index:默认首页文件 -
location:路径匹配与处理规则 -
error_page:自定义错误页 -
access_log:访问日志路径 -
error_log:错误日志路径 -
ssl_certificate/ssl_certificate_key:HTTPS 证书配置 -
client_max_body_size:上传文件大小限制 -
proxy_pass:反向代理目标 -
rewrite:URL 重写 -
return:直接返回响应 -
include:引入其他配置文件 -
deny/allow:IP 访问控制
目前的生产配置项有哪些listen、server_name、root、index、access_log、error_log、loaction- 其它没啥好说的,说说loaction生产配置项干了啥吧
a.第一个location配置的是优先查找实际文件或目录下,找不到则返回到index.html
b.第二个location配置的是拦截所有以 .html 结尾的请求,强制关闭缓存,这段配置主要是防止 CDN、中间代理或浏览器缓存 HTML 文件,确保每次请求都拉取最新页面内容
a.第三个和第四的location配置的是关联的,它会优先匹配/static/ 开头的请求,如果存在就直接返回,如果不存在则转到@static,@static其实就是去除/static/直接到根路径去寻找资源找到就返回,找不到就404
目前生产环境代码就配置了这些,后面我可能扩展更新一版,比如负载均衡配置控制等,也可能不更新,毕竟现在项目都是在集群入口统一的负载均衡