Nginx 配置文件访问与下载
介绍
因为服务器上堆积了很多文件,有时候需要查看或下载,每次都要到服务器很不方便。
可能有小伙伴会说可以使用一些文件工具或者搭建文件系统等等,不过我觉得看个人需求吧
本章节主要简单的介绍使用 nginx 托管文件,实现文件访问与下载。
使用
默认配置
初始化安装 nginx 后,会生成默认的配置,其中
全局配置文件路径一般为: /etc/nginx/nginx.conf
user nginx; # 指定nginx运行的用户
worker_processes auto; # 自动设置工作进程的数量
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024; # 每个工作进程的最大连接数
}
http {
include /etc/nginx/mime.types; # 包含MIME类型配置文件
default_type application/octet-stream; # 默认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 /var/log/nginx/access.log main; # 访问日志文件位置及格式
sendfile on; # 开启高效的文件传输模式
#tcp_nopush on; # 减少发送数据包的数量,提高性能
#tcp_nodelay on; # 禁用Nagle算法
keepalive_timeout 65; # 客户端连接保持超时时间
#gzip on; # 开启gzip压缩
include /etc/nginx/conf.d/*.conf; # 包含其他配置文件
}
默认配置文件路径一般为:/etc/nginx/conf.d/default.conf
server {
listen 80; # 指定监听的端口
listen [::]:80;
server_name localhost; # 指定主机名
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html; # 根目录
index index.html index.htm; # 默认索引文件
}
#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 /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
配置文件解析:
# 主要结构
user
worker_processes
events {}
http {
server {
location / {}
}
}
# 全局配置段 (user, worker_processes, events): 指定nginx运行的用户、设置工作进程数量、定义事件模块(如最大连接数)
# http块: 包含HTTP服务器的配置,包括MIME类型、默认类型、日志格式、访问日志位置、文件传输模式、TCP优化、保持连接超时、gzip压缩等。
# server块: 定义一个虚拟主机(server),监听指定端口,处理指定主机的请求。
# location块:处理URI路径,指定根目录和默认索引文件。
# ...
文件配置
注意:下方注释了很多配置参数,仅作为测试,可自行查阅网络资料按需选用
http{
server{
# 根配置
location / {
root /usr/share/nginx/html; # 根目录
# alias /usr/share/nginx/html;
index index.html index.htm; # 默认索引文件
try_files $uri $uri/ /index.html last;
}
# 多文件配置
location ^~ /files/ {
alias /usr/share/nginx/files/; # 需要下载的文件存放的目录
# internal; # 指令表示只允许nginx内部调用该URL,不允许客户端直接访问,从而保证了下载的安全性
if ($request_filename ~* ^.*?\.(html|doc|pdf|zip|docx|txt)$) {
add_header Content-Disposition attachment;
add_header Content-Type application/octet-stream;
}
sendfile on; # 开启高效文件传输模式
# tcp_nopush on; # 该指令必须在 sendfile 打开的状态下才会生效,主要是用来减少发送数据包的数量,提高网络包的传输效率
# tcp_nodelay on; # 该指令必须在keep-alive连接开启的情况下才生效,来提高网络包传输的实时性
autoindex on; # 开启目录文件列表
autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes
autoindex_localtime on; # 显示的文件时间为文件的服务器时间
charset utf-8,gbk; # 避免中文乱码
# aio threads; # 开启异步文件IO,在进行大文件传输时提高效率
# gzip off; # 关闭gzip压缩,避免影响传输速度
# etag off; # 关闭etag,避免占用过多CPU资源
# client_max_body_size 1G; # 设置单个连接最大传输文件大小
# client_body_buffer_size 128k;
# proxy_max_temp_file_size 0; # 代理缓存文件最大值
# output_buffers 1 1m; # 指定块大小,减小内存占用
# keepalive_timeout 65; # 客户端连接保持超时时间
# keepalive_requests 100000;
# limit_req zone=baism burst=5 nodelay;
# limit_conn addr 1; # 只能同时建立一个链接
# limit_rate 128k; # 最大传输速率
# limit_rate_after 250m; # 超过250m限制传输速率
}
# 单文件配置
location ^~ /files-part/ {
internal;
alias /usr/share/nginx/files/;
# 单个连接速率限制
limit_rate 10M;
}
}
}
配置进程数和连接数:
worker_processes 4; # 进程数
worker_cpu_affinity 0001 0010 0100 1000; # 为每个进程分配cpu
events {
use epoll; # 使用epoll的I/O模型,用这个模型来高效处理异步事件
worker_connections 65535; # 每个进程允许的最多连接数
multi_accept on; # 接受多个新连接
}
...
http {
...
sendfile on;
#tcp_nopush on;
...
}
注意:以上内容仅作为参考示例,通过配置进程数和连接数在一定程度上可以提高性能(高并发),不过需要对服务器配置有一定了解和要求,否则会起反作用,具体可以查阅网络资料。