Update nginx.conf

pull/10/head
plhw57tbe 4 months ago
parent 19ca004489
commit 526c31062b

@ -1,50 +1,82 @@
user nginx;
# Nginx 核心配置文件,用于处理静态资源和反向代理请求到 Django 应用
# 全局配置段:设置 Nginx 整体运行参数
nginx; # 标识该文件为 Nginx 配置文件(固定起始标识)
# 工作进程数auto 表示自动根据服务器 CPU 核心数分配(优化并发性能)
worker_processes auto;
# 错误日志配置指定日志路径和日志级别notice 级别记录重要信息,不冗余)
error_log /var/log/nginx/error.log notice;
# PID 文件路径:存储 Nginx 主进程 ID用于管理 Nginx 进程(如重启、停止)
pid /var/run/nginx.pid;
# 事件模块配置:控制 Nginx 网络连接相关参数
events {
# 单个工作进程允许的最大并发连接数1024 为基础值,可根据服务器性能调整)
worker_connections 1024;
}
# HTTP 模块配置:处理 HTTP 请求的核心配置,包含全局规则和虚拟主机
http {
# 引入 MIME 类型映射文件:定义不同文件后缀对应的 Content-Type .html 对应 text/html
include /etc/nginx/mime.types;
# 默认 MIME 类型:当文件类型未匹配时,默认使用二进制流类型(避免浏览器直接解析未知文件)
default_type application/octet-stream;
# 日志格式定义:自定义访问日志的记录字段,命名为 main
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 访问日志配置:使用上面定义的 main 格式,指定日志存储路径
access_log /var/log/nginx/access.log main;
# 开启高效文件传输模式:使用内核零拷贝技术,提升静态文件传输效率
sendfile on;
#tcp_nopush on;
# tcp_nopush on; # 可选配置:开启后会累积数据包再发送,适合大文件传输,默认关闭
# 长连接超时时间:客户端与 Nginx 保持连接的最长时间65 秒,超时后自动断开)
keepalive_timeout 65;
#gzip on;
# gzip on; # 可选配置:开启 Gzip 压缩,减少传输带宽,默认关闭
# 虚拟主机配置:定义一个具体的站点规则(处理 80 端口的 HTTP 请求)
server {
# 站点根目录:默认请求的文件查找路径(此处指向 Django 静态文件目录)
root /code/djangoblog/collectedstatic/;
# 监听端口:该虚拟主机处理 80 端口的请求Nginx 默认 HTTP 端口)
listen 80;
# 长连接超时时间:覆盖 HTTP 模块的全局配置,仅作用于当前虚拟主机
keepalive_timeout 70;
# 静态资源路径规则:匹配以 /static/ 开头的请求(处理 Django 静态文件)
location /static/ {
# 缓存控制:设置静态文件缓存时间为最大(浏览器会长期缓存,减少重复请求)
expires max;
# 路径别名:将 /static/ 请求映射到实际的静态文件目录(与 root 配合确保路径正确)
alias /code/djangoblog/collectedstatic/;
}
# 默认路径规则:匹配所有未被上面规则匹配的请求(转发到 Django 应用)
location / {
# 转发请求头:传递客户端真实 IP Django否则 Django 会认为请求来自 Nginx
proxy_set_header X-Real-IP $remote_addr;
# 转发请求头:传递客户端 IP 列表(适用于多层代理场景)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 转发请求头:传递原始请求的 Host 头(确保 Django 正确识别请求域名)
proxy_set_header Host $http_host;
# 转发标识:告诉 Django 请求来自 Nginx 代理
proxy_set_header X-NginX-Proxy true;
# 关闭重定向处理:禁止 Nginx 自动修改 Django 返回的重定向地址
proxy_redirect off;
# 条件判断:如果请求的文件在 Nginx 本地不存在(非静态文件)
if (!-f $request_filename) {
# 反向代理:将请求转发到 Django 服务(通过 Kubernetes Service 名称 djangoblog 8000 端口)
proxy_pass http://djangoblog:8000;
break;
break; # 跳出条件判断,不再执行后续规则
}
}
}
}
}
Loading…
Cancel
Save