我正在尝试让 nginx 接受 POST 和 PUT 方法来上传文件。我已经编译了 nginx_upload_module-2.2.0。
我找不到任何操作方法。我只想为此使用 nginx,不使用反向代理,不使用其他后端,也不使用 php。
这能实现吗?
这是我的会议:
nginx version: nginx/1.2.3TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-cc-opt='-O2 -g' --add-module=/usr/src/nginx-1.2.3/nginx_upload_module-2.2.0
server {
listen 80;
server_name example.com;
location / {
root /html;
autoindex on;
}
location /upload {
root /html;
autoindex on;
upload_store /html/upload 1;
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_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;
}
}
作为上传表单,我尝试使用本页末尾列出的表单:http://grid.net.ru/nginx/upload.en.html
答案1
关于 POST 请求:也许您没有在上传目标目录中创建目录 0 1 2 3 4 5 6 7 8 9?
您始终可以使用 DAV 进行 PUT 请求,您已经将其编译到您的 nginx 中:
location /upload {
alias upload/data;
client_body_temp_path upload/client_tmp;
dav_methods PUT DELETE MKCOL COPY MOVE;
create_full_put_path on;
dav_access group:rw all:r;
}
您将需要这个(在 http 或位置):
client_max_body_size 10000m;
现在尝试一下:
curl -T ubuntu-10.04.4-alternate-amd64.iso http://localhost/upload/blah2
干杯!Georg
答案2
第三方上传模块根本不支持 PUT。如果您想使用 PUT 上传,则必须使用标准 nginx 上传处理。