当前位置: 首页 > news >正文

Nginx 配置文件解析

nginx 配置文件解析

1、nginx 配置文件模块介绍

nginx 配置文件采用 分层模块化设计,主要分为以下几大模块

模块层级作用域核心功能
main全局生效控制进程、日志、性能等全局参数
events网络连接层定义连接处理模型与并发参数
httpHTTP 协议层所有 HTTP 相关配置的容器(可嵌套多个 server)
server虚拟主机层定义域名、端口、根目录等主机参数
locationURL 路由层根据 URL 规则处理请求
upstream负载均衡层定义后端服务器集群与负载均衡

2、语法规则

2.1 基础语法

# 当行指令格式:指令名 参数1 参数2 ...;
worker_processes auto;  # 指令以分好结尾# 指令块格式:指令名 { ... }
events {worker_connections: 1024;  # 快内指令须缩进use epoll;
}# 注释:以 # 开头
# 错误日志 路径配置
error_log  logs/error.log  info;

2.3 高级特性

  • 变量:使用 $ 符号引用

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
    
  • 正则匹配:~ (区分大小写) 或 ~* (不区分)

    location ~* \.(jpg|png)$ {...}  # 匹配图片请求
    
  • 文件包含:通过 include 提升可维护性

    include /etc/nginx/conf.d/*.conf;  # 加载子配置文件
    

3、nginx 配置文件 解析

#user  nobody;  # 运行用户(安全加固必选项)
worker_processes  1;  # 工作进程数(推荐设为 CPU 核心数)#error_log  logs/error.log;  # 错误日志与级别
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;  # 进程 PID 文件路径events {worker_connections  1024;  # 每个工作进程允许的最大连接数。1024 表示每个工作进程最多可以处理 1024 个并发连接
}http {include       mime.types;  # 包含 MIME 类型定义文件,用于映射文件扩展名到 MIME 类型default_type  application/octet-stream;  # 默认的 MIME 类型。如果无法匹配到具体的 MIME 类型,则使用此值# 日志格式log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 指定 访问日志的路径和格式access_log  logs/access.log  main;# 启用 高效文件传输模式,提升静态文件的传输性能sendfile        on;# 启用后会发送数据包时进行优化(如合并小包),通常与 sendfile 配合使用tcp_nopush     on;# 设置长连接的超时时间(单位:秒)。65 表示客户端在 65 秒内没有新请求时,连接会被关闭#keepalive_timeout  0;keepalive_timeout  65;# 启用 GZIP 压缩功能,减少传输数据量。gzip  on;gzip_types text/plain text/css application/json;  # 压缩文件类型gzip_min_length 1024;         # 最小压缩文件大小gzip_comp_level 6;            # 压缩级别(1-9)upstream backend {# 负载策略(默认轮询)server 192.168.1.100:8080 weight=5;  # 权重分配(权重越高处理越多请求)server 192.168.1.101:8080;server backup.example.com:8080 backup;  # 备用服务器# 会话保持策略(三选一)ip_hash;                     # 基于客户端IP哈希# least_conn;                # 最少连接数优先# fair;                      # 第三方模块,响应时间优先keepalive 32;                # 保持的长连接数(提升性能)}server {# 监听端口。80 是 HTTP 协议的默认端口listen       80;# 定义服务器名称:localhost 表示该虚拟主机响应针对 localhost 的请求server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;# 访问控制(白名单/黑名单)allow 192.168.1.0/24;         # 允许指定网段deny all;                     # 拒绝其他所有IP# 定义根路径 的处理规则location / {# 设置 网站的根目录。 html 表示相对于 nginx 安装目录的 html 文件夹root   html;# 指定默认首页文件index  index.html index.htm;try_files $uri $uri/ /index.html;  # 文件查找顺序(适用于SPA)}location /api/ {proxy_pass http://backend;    # 反向代理到后端集群proxy_set_header Host $host;  # 透传原始域名proxy_set_header X-Real-IP $remote_addr;  # 传递客户端真实IP}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;  # 指定 SSL 证书 和 私钥的路径#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;  # 指定 SSL 会话缓存#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;  # 指定 加密算法#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

http://www.mrgr.cn/news/97380.html

相关文章:

  • 如何让 -webkit-slider-thumb 生效
  • c++项目 网络聊天服务器 实现;QPS测试
  • 【HFP】蓝牙HFP应用层核心技术研究
  • 算法基础—前缀和
  • 深入解析多功能模糊搜索:构建高效灵活的JavaScript搜索工具析
  • Java 集合框架与 Stream 流深入剖析(重点详细讲解)
  • ffmpeg视频转码相关
  • Python星球日记 - 第5天:循环结构
  • 个人博客系统——测试报告
  • Python----计算机视觉处理(Opencv:道路检测之提取车道线)
  • 4.nRF52xx蓝牙学习(GPIOTE与外部中断)
  • Docker基础2
  • 【前端】Node.js一本通
  • 红宝书第二十九讲:详解编辑器和IDE:VS Code与WebStorm
  • 21 天 Python 计划:MySQL 库相关操作
  • 类与对象(中)(详解)
  • k8s1.24升级1.28
  • [刷题总结] 双指针 滑动窗口
  • 【内网安全】DHCP 饿死攻击和防护
  • Gerapy二次开发:用户管理专栏主页面开发