Nginx的作用、目录结构及常用配置参数说明

107 阅读6分钟

摘要

本文介绍了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、资讯、面试等多个领域。无论是前沿科技的探索,还是实用技巧的总结,我们都致力于为大家呈现有价值的内容。期待与你共同进步,开启技术之旅。