目录
- conf文件内容如下
- html文件内容如下
- 上传文件功能展示
conf文件内容如下
#user nobody;
worker_processes 1;error_log /usr/logs/error.log;
#error_log /usr/logs/error.log notice;
#error_log /usr/logs/error.log info;#pid /usr/logs/nginx.pid;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;client_max_body_size 100m;location / {root /root/nginxShare;index uploadfile.html uploadfile.htm; # 这会使得在访问根目录时默认展示 uploadfile.html}error_page 405 =200 @405;# 配置上传位置location /upload {if ($request_method = 'GET'){root /root/nginxShare;}if ($request_method = 'POST'){upload_pass @test; # 指定上传完成后请求的处理位置# upload_store /root/nginxShare/upload 1; # 数字1表示启用了一种特殊的文件存储机制,即分散存储upload_store /root/nginxShare/upload;upload_store_access user:rw; #上传文件的权限,rw表示读写 r只读#这里写入http报头,pass到后台页面后能获取这里set的报头字段upload_set_form_field "${upload_field_name}_name" $upload_file_name;upload_set_form_field "${upload_field_name}_content_type" $upload_content_type;upload_set_form_field "${upload_field_name}_path" $upload_tmp_path;#Upload模块自动生成的一些信息,如文件大小与文件md5值upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5;upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size;upload_pass_form_field "^submit$|^description$";upload_cleanup 400 404 499 500-505; #如果pass页面是以下状态码,就删除此次上传的临时文件 } }# 处理上传完成后的请求location @test {# 这里可以配置代理到后端服务,或者直接返回响应# 例如,返回一个简单的文本响应return 200 'File uploaded successfully!20241104';# 或者代理到某个后端服务处理上传后的逻辑# proxy_pass http://localhost:7123;;} }server {listen 9000;server_name localhost;client_max_body_size 100m;charset gbk,utf-8;root /root/nginxShare;location / {auth_basic "Restricted"; autoindex on;autoindex_exact_size on;autoindex_localtime on;}}
}
html文件在/root/nginxShare目录下。
上传的文件存放在/root/nginxShare/upload目录下。
上传成功会返回一个文本响应,文本内容为:File uploaded successfully!20241104
html文件内容如下
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>文件上传测试</title>
</head>
<body><h2>文件上传</h2><form action="/upload" method="post" enctype="multipart/form-data"><input type="file" name="file" required><br><input type="submit" value="上传"></form>
</body>
</html>
上传文件功能展示
运行nginx服务器
mkdir -p /var/log/nginx /var/tmp/nginx./sbin/nginx -c /etc/nginx/nginx.conf
在浏览器输入:192.168.61.61::80
显示页面如下:
点击选择文件,选择本地文件,点击上传后,会弹出如下页面:
下载该文件后,查看文件内容:
可以看到,文本内容符合预期,接着我们查看/root/nginxShare/upload目录
可以看到,文件已上传成功,不过文件的名字是从1开始的,具体怎么控制文件名还没实现。