兰 亭 墨 苑
期货 · 量化 · AI · 终身学习
首页
归档
编辑文章
标题 *
URL 别名 *
内容 *
(支持 Markdown 格式)
# Nginx 的配置文件结构非常清晰,采用**分层、块状(Block)**的结构 通常主配置文件位于 `/etc/nginx/nginx.conf`,而具体的站点配置位于 `/etc/nginx/conf.d/` 或 `/etc/nginx/sites-enabled/`。 我们将 Nginx 配置分为 **五个核心层级** 来详解: --- ### 一、 核心层级结构 ```nginx # 1. 全局块 (Global) user nginx; worker_processes auto; events { # 2. events块 (网络连接设置) worker_connections 1024; } http { # 3. http块 (全局Web参数) include mime.types; default_type application/octet-stream; upstream myserver { # 4. upstream块 (负载均衡配置) server 127.0.0.1:8080; } server { # 5. server块 (虚拟主机配置) listen 80; server_name localhost; location / { # location块 (路由匹配) root html; index index.html; } } } ``` --- ### 二、 详细指令详解 #### 1. 全局块 (Main) 主要设置影响 Nginx 服务器整体运行的配置。 * **`user`**: 运行 Nginx 的用户(建议非 root 以保证安全)。 * **`worker_processes`**: 工作进程数。通常设置为 CPU 核心数,或 `auto`。 * **`error_log`**: 全局错误日志路径。 #### 2. events 块 影响 Nginx 与用户的网络连接。 * **`worker_connections`**: 每个进程允许的最大并发连接数(总并发 = 进程数 × 此值)。 #### 3. http 块 (核心部分) 处理 HTTP 请求的主要配置,支持嵌套多个 `server`。 * **`include`**: 引入其他配置文件(如 `mime.types` 告诉浏览器文件类型)。 * **`sendfile on`**: 开启高效文件传输模式,显著提升静态资源读取速度。 * **`keepalive_timeout`**: 连接超时时间。 * **`gzip on`**: 开启 Gzip 压缩,减少网络带宽消耗。 #### 4. server 块 (虚拟主机) 一个 `server` 块代表一个网站。 * **`listen 80`**: 监听的端口。 * **`server_name`**: 域名(如 `www.example.com`)。 * **`ssl_certificate` / `ssl_certificate_key`**: 配置 HTTPS 证书路径。 #### 5. location 块 (路由规则) 这是 Nginx 最灵活的地方,用于匹配特定的 URL。 * **匹配优先级**: 1. `= /path`:精确匹配。 2. `^~ /path`:前缀匹配,匹配后不再搜索正则。 3. `~` 或 `~*`:正则匹配(区分/不区分大小写)。 4. `/`:通用前缀匹配(最后保底)。 --- ### 三、 常用功能配置示例 #### 1. 反向代理 (最常用) 将请求转发到后端的应用服务器(如 Go、Java、Node.js)。 ```nginx location /api/ { proxy_pass http://127.0.0.1:8080; # 转发请求 proxy_set_header Host $host; # 传递真实主机名 proxy_set_header X-Real-IP $remote_addr; # 传递客户端真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ``` #### 2. 负载均衡 (Load Balancing) ```nginx upstream backend_cluster { server 192.168.1.10:80 weight=3; # 权重分配 server 192.168.1.11:80; server 192.168.1.12:80 backup; # 备用机 } server { location / { proxy_pass http://backend_cluster; } } ``` #### 3. 动静分离 (提高性能) 静态资源由 Nginx 直接处理,动态请求转发后端。 ```nginx # 静态资源交给 Nginx location /static/ { root /var/www/my_app; expires 30d; # 设置缓存时间 } # 动态请求交给后端 location / { proxy_pass http://localhost:5000; } ``` #### 4. HTTPS (SSL) 配置 ```nginx server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; # 强制 HTTP 跳转 HTTPS error_page 497 https://$host$request_uri; } ``` --- ### 四、 常用管理命令 配置完成后,必须执行以下命令: 1. **检查语法是否正确**: ```bash nginx -t ``` *(非常重要!修改配置后必做,防止语法错误导致服务宕机)* 2. **平滑重载配置**: ```bash nginx -s reload ``` *(不会中断当前已连接的用户,直接应用新配置)* 3. **查看状态**(Linux 系统): ```bash systemctl status nginx ``` ### 五、 进阶优化建议 1. **安全限制**:使用 `limit_conn` 和 `limit_req` 指令防止 DDoS 攻击和爬虫。 2. **多配置文件**:不要把所有网站写在 `nginx.conf` 里,利用 `include /etc/nginx/conf.d/*.conf;` 让每个站点拥有独立的配置文件。 3. **日志分割**:为每个虚拟主机配置独立的 `access_log`,方便后续排查问题。
配图 (可多选)
选择新图片文件或拖拽到此处
标签
更新文章
删除文章