Nginx 配置文件服务器:静态文件服务和文件上传功能
以下是一个简单的 nginx 配置文件服务器示例,包含静态文件服务和文件上传服务:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name example.com;
# 静态文件目录
root /var/www/example.com;
# 静态文件缓存
expires 1d;
# 文件大小限制
client_max_body_size 10M;
# 静态文件访问
location / {
try_files $uri $uri/ =404;
}
# 文件上传
location /upload {
# 限制 POST 方法
if ($request_method != POST) {
return 405;
}
# 限制文件类型
if ($content_type !~* 'multipart/form-data') {
return 415;
}
# 限制文件大小
client_body_buffer_size 10M;
client_max_body_size 10M;
# 上传文件目录
upload_pass /upload.php;
# 上传文件大小限制
upload_set_form_field $upload_field_name.name '$upload_file_name';
upload_set_form_field $upload_field_name.path '$upload_tmp_path';
upload_set_form_field $upload_field_name.content_type '$upload_content_type';
upload_set_form_field $upload_field_name.size '$upload_file_size';
upload_set_form_field $upload_field_name.md5 '$upload_file_md5';
upload_set_form_field $upload_field_name.sha1 '$upload_file_sha1';
upload_set_form_field $upload_field_name.sha256 '$upload_file_sha256';
upload_set_form_field $upload_field_name.sha512 '$upload_file_sha512';
upload_set_form_field $upload_field_name.timestamp '$upload_timestamp';
upload_set_form_field $upload_field_name.ip '$remote_addr';
upload_set_form_field $upload_field_name.agent '$http_user_agent';
upload_set_form_field $upload_field_name.referer '$http_referer';
upload_set_form_field $upload_field_name.token '$http_token';
upload_set_form_field $upload_field_name.signature '$http_signature';
upload_set_form_field $upload_field_name.expires '$http_expires';
upload_set_form_field $upload_field_name.random '$http_random';
upload_set_form_field $upload_field_name.uuid '$http_uuid';
upload_set_form_field $upload_field_name.width '$http_width';
upload_set_form_field $upload_field_name.height '$http_height';
upload_set_form_field $upload_field_name.format '$http_format';
upload_set_form_field $upload_field_name.quality '$http_quality';
upload_set_form_field $upload_field_name.watermark '$http_watermark';
upload_set_form_field $upload_field_name.crop '$http_crop';
upload_set_form_field $upload_field_name.trim '$http_trim';
upload_set_form_field $upload_field_name.blur '$http_blur';
upload_set_form_field $upload_field_name.sharpen '$http_sharpen';
upload_set_form_field $upload_field_name.rotate '$http_rotate';
upload_set_form_field $upload_field_name.flip '$http_flip';
upload_set_form_field $upload_field_name.flop '$http_flop';
upload_set_form_field $upload_field_name.canvas '$http_canvas';
upload_set_form_field $upload_field_name.gravity '$http_gravity';
upload_set_form_field $upload_field_name.background '$http_background';
upload_set_form_field $upload_field_name.border '$http_border';
upload_set_form_field $upload_field_name.quality '$http_quality';
# 上传文件重命名
upload_rename_file_path off;
# 上传文件权限
upload_set_access_rights 0644;
# 上传文件类型
upload_set_mime_type application/octet-stream;
# 上传文件日志
access_log /var/log/nginx/upload.access.log;
# 上传文件错误日志
error_log /var/log/nginx/upload.error.log;
# 上传文件完成后的跳转
upload_cleanup 400 404 499 500-503 /upload.php;
# 上传文件完成后的返回值
upload_pass_args on;
upload_pass_args_expires on;
upload_pass_args_status on;
upload_pass_args_ip on;
upload_pass_args_agent on;
upload_pass_args_referer on;
upload_pass_args_token on;
upload_pass_args_signature on;
upload_pass_args_expires on;
upload_pass_args_random on;
upload_pass_args_uuid on;
upload_pass_args_width on;
upload_pass_args_height on;
upload_pass_args_format on;
upload_pass_args_quality on;
upload_pass_args_watermark on;
upload_pass_args_crop on;
upload_pass_args_trim on;
upload_pass_args_blur on;
upload_pass_args_sharpen on;
upload_pass_args_rotate on;
upload_pass_args_flip on;
upload_pass_args_flop on;
upload_pass_args_canvas on;
upload_pass_args_gravity on;
upload_pass_args_background on;
upload_pass_args_border on;
upload_pass_args_quality on;
}
}
}
功能说明
-
静态文件服务
- 支持缓存,
expires 1d设置缓存时间为 1 天。 - 限制文件大小,
client_max_body_size 10M限制请求体大小为 10MB。 - 静态文件目录为
/var/www/example.com。
- 支持缓存,
-
文件上传服务
- 限制上传方法为 POST 方法。
- 限制文件类型为
multipart/form-data。 - 限制上传文件大小为 10MB。
- 将上传文件传递给
/upload.php处理。 - 上传文件完成后的跳转地址为
/upload.php。 - 上传文件完成后的返回值包含文件信息、请求信息等。
配置说明
upload_set_form_field指令用于将上传文件信息作为参数传递给/upload.php。upload_rename_file_path指令用于控制是否重命名上传文件。upload_set_access_rights指令用于设置上传文件的权限。upload_set_mime_type指令用于设置上传文件的 MIME 类型。upload_pass_args指令用于控制是否将请求参数传递给/upload.php。
上述配置只是示例,实际使用中需要根据具体情况进行调整。
原文地址: https://www.cveoy.top/t/topic/nSD0 著作权归作者所有。请勿转载和采集!