Update nginx.conf

hqq_branch
pfy5v82cw 4 months ago
parent 47b5668ce7
commit d49ff1446d

@ -1,50 +1,105 @@
user nginx;
# 声明使用Nginx服务配置文件起始标识
user nginx;
# 设置工作进程数量,"auto"表示自动根据CPU核心数调整优化并发处理能力
worker_processes auto;
# 错误日志配置:日志路径为/var/log/nginx/error.log日志级别为notice记录警告及以上级别信息
error_log /var/log/nginx/error.log notice;
# 进程ID文件路径存储Nginx主进程PID的文件用于进程管理如启动/停止服务)
pid /var/run/nginx.pid;
# 事件模块配置控制Nginx处理连接的方式
events {
# 每个工作进程的最大连接数并发处理能力上限默认1024可根据服务器性能调整
worker_connections 1024;
}
# HTTP核心模块配置处理HTTP协议的核心设置包含所有与HTTP请求相关的配置
http {
# 引入MIME类型映射文件定义不同文件扩展名对应的Content-Type如.html对应text/html
include /etc/nginx/mime.types;
# 默认MIME类型当无法识别文件类型时默认按二进制流application/octet-stream处理
default_type application/octet-stream;
# 定义日志格式,命名为"main"(后续可通过此名称引用该格式)
# 日志字段说明:
# $remote_addr客户端IP地址
# $remote_user客户端认证用户名未认证则为空
# [$time_local]:访问时间(本地时区)
# "$request"完整请求行如GET /index.html HTTP/1.1
# $statusHTTP响应状态码如200、404
# $body_bytes_sent发送给客户端的响应体大小字节
# "$http_referer"请求来源页面Referer头信息
# "$http_user_agent":客户端浏览器/设备信息User-Agent头
# "$http_x_forwarded_for"代理链中的客户端真实IP多代理场景下使用
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 访问日志配置:使用上述"main"格式,日志路径为/var/log/nginx/access.log
access_log /var/log/nginx/access.log main;
# 启用高效文件传输模式(通过内核缓冲区直接发送文件,减少用户态与内核态切换,提升性能)
sendfile on;
# 关闭tcp_nopush与sendfile配合使用开启时会累积数据再一起发送适合大文件此处关闭则实时发送
#tcp_nopush on;
# 长连接超时时间:客户端与服务器保持连接的最大时长(秒),超时后自动关闭连接
keepalive_timeout 65;
# 关闭gzip压缩若需启用取消注释并配置可压缩响应数据减少传输量
#gzip on;
# 虚拟主机配置定义一个具体的网站服务可配置多个server块实现多网站
server {
# 网站根目录默认请求的文件查找路径此处指向Django静态文件收集目录
root /code/djangoblog/collectedstatic/;
# 监听端口该虚拟主机监听80端口HTTP默认端口
listen 80;
# 该虚拟主机的长连接超时时间覆盖http块中的全局设置此处为70秒
keepalive_timeout 70;
# 静态文件路径配置:匹配以/static/开头的请求
location /static/ {
# 静态文件缓存策略:设置为最大缓存时间(浏览器会长期缓存,适合不常变化的静态资源)
expires max;
# 静态文件实际路径:将/static/请求映射到该目录与root的区别是会替换location路径
alias /code/djangoblog/collectedstatic/;
}
# 主请求处理:匹配所有其他路径的请求(除上述/static/外)
location / {
# 设置代理请求头传递客户端真实IP给后端服务
proxy_set_header X-Real-IP $remote_addr;
# 设置代理请求头传递代理链中的客户端IP列表多代理场景
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 设置代理请求头传递原始请求的Host头信息后端服务用于识别域名
proxy_set_header Host $http_host;
# 自定义代理标识头后端服务可通过此头判断请求来自Nginx代理
proxy_set_header X-NginX-Proxy true;
# 关闭代理重定向禁止Nginx自动修改后端服务返回的Location头
proxy_redirect off;
# 条件判断:如果请求的文件在本地不存在(!-f表示非文件
if (!-f $request_filename) {
# 反向代理将请求转发到名为djangoblog的服务的8000端口通常是Django的uWSGI/Gunicorn服务
proxy_pass http://djangoblog:8000;
break;
# 跳出当前if块不再执行后续逻辑
break;
}
}
}
}
}
Loading…
Cancel
Save