十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

nginx - 核心概念

nginx - 核心概念 文章目录一、常用命令二、核心功能1. 正向代理和反向代理1.1 正向代理1.2 反向代理2. 负载均衡3. 动静分离3.1 动静分离的实现原理3.2 Nginx 配置实战3.3 为什么静态资源由 Nginx 直接返回回比较快Nginx是一个高性能的 HTTP 和反向代理服务器以其高并发处理能力、低内存消耗和模块化架构闻名。根据 W3Techs 数据全球约34.2%的网站使用Nginx 作为 Web服务器或反向代理。Nginx 安装下载链接http://nginx.org/en/download.html我安装的是1.16.1 版本的如下然后解压到一个指定的文件夹就行双击根目录的 nginx 图标然后再访问 http://localhost/若出现以下页面表示启动成功也可以在任务管理器中查看是否启动成功:一、常用命令目的Linux / macOSWindowsexe 同级目录启动nginxstart nginx或双击nginx.exe优雅停止nginx -s quitnginx -s quit立即停止nginx -s stopnginx -s stop重载配置热更新nginx -s reloadnginx -s reload重新打开日志切割日志用nginx -s reopennginx -s reopen测试配置是否正确nginx -tnginx -t打印配置信息nginx -Tnginx -T指定配置文件启动nginx -c /path/nginx.confnginx -c D:\conf\nginx.conf指定前缀目录nginx -p /opt/nginx/nginx -p D:\nginx\查看版本 编译参数nginx -Vnginx -V查看帮助nginx -hnginx -h一行搞定常见组合:nginx-tnginx-sreload# 先检查再热重载Windows 下若提示找不到nginx.pid先start nginx确保进程已启动再执行nginx -s reload/quit即可。如图Nginx 日志存放位置访问日志/nginx/log/nginx/access.log错误日志/nginx/log/nginx/error.log二、核心功能功能描述典型应用场景正向代理代理客户端请求隐藏真实客户端信息企业内网访问外网、爬虫代理反向代理代理服务器端响应隐藏真实服务器信息网站接入层、API 网关负载均衡将流量分发到多个后端服务器高并发网站、微服务架构动静分离静态资源与动态请求分开处理1. 正向代理和反向代理1.1 正向代理正向代理是指客户端配置代理服务器通过代理服务器访问目标服务器。客户端并不知道实际的目标服务器只能通过代理服务器进行访问。核心特点客户端配置需在客户端显式设置代理地址隐私保护服务器无法获取真实客户端 IP访问控制企业常用于限制员工上网行为典型场景企业内网访问外网爬虫 IP 轮换科学上网工具配置示例server{listen3128;resolver8.8.8.8;location /{proxy_pass http://$http_host$request_uri;proxy_set_header X-Forwarded-For$remote_addr;}}1.2 反向代理反向代理是指客户端直接访问代理服务器代理服务器再将请求转发给目标服务器。客户端并不知道实际的目标服务器只能通过代理服务器进行访问。核心特点客户端无感知用户直接访问代理地址服务器保护隐藏后端服务器拓扑功能扩展支持 SSL 卸载、缓存等典型场景网站接入层CDN 边缘节点API 网关配置示例upstream backend{server10.0.0.1:8080weight3;server10.0.0.2:8080;}server{listen80;server_name example.com;location /{proxy_pass http://backend;proxy_set_header Host$host;}}2. 负载均衡见这篇文章 负载均衡策略3. 动静分离动静分离是指将网站的静态资源如HTML、CSS、JS、图片等和动态内容如 PHP、Java 生成的页面分开处理的技术方案。通过Nginx实现动静分离可以显著提高网站的性能和并发处理能力。为什么要做动静分离1、性能优化静态资源由 Nginx 直接返回效率比应用服务器高 10 倍以上2、减轻后端压力减少应用服务器的请求量节省 CPU 资源3、提升用户体验静态资源加载更快页面响应更迅速4、便于扩展静态资源可以单独做 CDN 加速3.1 动静分离的实现原理3.2 Nginx 配置实战1、基础配置示例server{listen80;server_name example.com;# 静态资源目录location ~*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|woff|ttf)${root /var/www/static;expires 30d;# 缓存30天access_log off;}# 动态请求转发location /{proxy_pass http://backend_server;proxy_set_header Host$host;}}2、进阶优化配置# 静态资源压缩gzipon;gzip_types text/plain text/css application/json application/javascript;# 静态资源缓存控制location ~*\.(jpg|png|gif)${expires 365d;add_header Cache-Controlpublic, no-transform;}# 禁止访问隐藏文件location ~ /\.{deny all;}动静分离的目录结构建议/var/www/ ├── static/ # 静态资源 │ ├── css/ │ ├── js/ │ ├── images/ │ └── fonts/ └── dynamic/ # 动态程序 ├── index.php └── api/3.3 为什么静态资源由 Nginx 直接返回回比较快架构层级更少处理路径更短。Nginx 直接返回客户端 → Nginx → 硬盘文件 → 返回客户端仅需 2 步跳转后端服务器处理客户端 → Nginx → 后端程序 → 框架处理 → 读取文件 → 返回 Nginx → 返回客户端至少 5 步跳转链路更长 类比就像去图书馆借书Nginx是管理员直接拿书给你后端服务器是让管理员先问馆长馆长再找图书管理员最后才把书给你。 感谢阅读想了解更多 我的博客网站 | 记录思考分享干货 我的个人主页 | 关于我、开源项目
返回列表