摘要
本文介绍了nginx的作用、目录结构、并通过示例配置文件来说明配置文件参数使用,让我们拿下它。
Nginx的作用
- 反向代理服务器
Nginx作为反向代理时,接收客户端请求并转发到后端服务器(如PHP、Python、Node.js等应用服务器),分担后端负载并提高系统可用性。支持HTTP、HTTPS、FastCGI等多种协议,且能根据URL、请求头等条件灵活路由。
- 负载均衡
通过轮询、最少连接、IP哈希等算法,Nginx将请求分发到多个后端服务器,实现高可用和扩展性。支持权重分配,可动态调整服务器负载比例。
- HTTP服务器
Nginx最初是作为HTTP服务器开发的,能够高效处理静态内容(如HTML、CSS、JavaScript、图像等)的请求。其事件驱动的架构使其在处理大量并发连接时资源消耗较低,性能优于传统服务器如Apache。
- 缓存加速
Nginx可缓存静态资源或动态内容,减少后端请求次数,提升响应速度。支持基于URL或HTTP头的缓存策略,以及缓存清理和过期管理。
- 安全防护
提供访问控制(IP限制)、HTTPS加密(SSL/TLS终端代理)、抵御DDoS攻击等安全功能,保护后端服务器免受恶意请求。
目录结构
进入nginx文件夹打开cmd输入nginx -v查看版本号,我这里是1.23.3
- conf
用于存放Nginx的主要配置文件,如nginx.conf是核心配置文件,通过它可以对Nginx的全局参数、事件处理、HTTP服务器等进行详细配置,还可以在该目录下创建其他配置文件,通过在nginx.conf中使用include指令将其包含进来,使配置更加模块化和易于管理。
- contrib
存放一些第三方贡献的脚本、工具或补丁等,这些内容可以帮助扩展 Nginx 的功能或提供额外的管理工具。
- docs
Nginx服务器的主要文档资料,包括Nginx服务器的LICENSE、OpenSSL的 LICENSE 、PCRE的LICENSE以及zlib的LICENSE ,还包括本版本的Nginx服务器升级的版本变更说明,以及README文档。
- html
管理前端静态文件
- logs
启动日志
- temp
临时文件夹
- client_body_temp :用于存放客户端请求的临时文件,当客户端发送较大的请求体时,Nginx 可能会将其内容暂存到这个目录下,等待后端服务处理。
- fastcgi_temp :存放 FastCGI 相关的临时文件,用于在与 FastCGI 应用程序通信时暂存数据。
- proxy_temp :存放反向代理时的临时文件,当 Nginx 作为反向代理服务器时,用于暂存从后端服务器获取的数据。
- uwsgi_temp :存放 uwsgi 相关的临时文件,用于在与 uwsgi 应用程序通信时暂存数据。
- scgi_temp :存放 scgi 相关的临时文件,用于在与 scgi 应用程序通信时暂存数据。
- nginx.exe
双击启用服务,进入任务管理器后台进程列表
配置内容拆分说明示例配置:conf\nginx.conf
#user nobody; #配置用户(通常不需要修改)
worker_processes 1; #工作进程数,一般设置为 CPU 核心数
#错误日志配置(可选)
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#进程 ID 文件位置(可选)
#pid logs/nginx.pid;
events {
# 单个 worker 进程的最大并发连接数
worker_connections 1024;
}
http {
# 包含 MIME 类型定义文件
include mime.types;
# 默认 MIME 类型
default_type application/octet-stream;
# 开启 sendfile 优化传输
sendfile on;
# 设置 keepalive 超时时间
keepalive_timeout 65;
# 服务器块配置(本机开发环境)
server {
# 开启 gzip 压缩
gzip on;
# 设置 gzip 压缩的最小文件大小
gzip_min_length 1k;
# gzip 压缩级别(1-9,6 是速度和压缩率的平衡点)
gzip_comp_level 6;
# 设置 gzip 压缩的 MIME 类型
gzip_types text/plain application/json application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-icon;
# 开启 Vary: Accept-Encoding 头
gzip_vary on;
# 监听的端口 前端地址
listen 8080;
# 服务器名称(域名或 IP)
server_name 127.0.0.1;
# 静态文件路径配置
location / {
# 静态文件根目录 root D:/Program Files/nginx1.23.3/html;
root html/mywebpage;
# 默认索引文件
index index.html index.htm;
# 文件查找顺序配置(支持前端路由)
try_files $uri $uri/ /index.html;
}
# 错误页面配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
# 错误页面的根目录
root html;
}
# API 请求代理配置
location ~ /api {
# 禁止浏览器缓存
add_header Cache-Control no-cache;
add_header Cache-Control private;
# 设置缓存失效时间
expires -1s;
# 代理到后端服务(这里假设后端服务运行在本地的 12000 端口)
# proxy_pass 后跟后端服务地址
proxy_pass http://127.0.0.1:12000;
}
# 避免 F5 刷新后返回 404 的配置(支持前端路由)
try_files $uri $uri/ /index.html;
}
}
总结
以上我们了解了nginx的作用、目录结构、并通过示例配置文件来说明了配置文件参数使用。
关注公众号:咖啡Beans
在这里,我们专注于软件技术的交流与成长,分享开发心得与笔记,涵盖编程、AI、资讯、面试等多个领域。无论是前沿科技的探索,还是实用技巧的总结,我们都致力于为大家呈现有价值的内容。期待与你共同进步,开启技术之旅。