Upload de Nginx PUT e POST

2

Estou tentando fazer com que o nginx aceite os métodos POST e PUT para fazer upload de arquivos. Eu compilei o nginx_upload_module-2.2.0.

Não consigo encontrar como. Eu simplesmente quero usar apenas nginx para isso, sem proxy reverso, nenhum outro backend e nenhum php.

Isso é possível?

esta é minha conf:

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;
}
}

E, como formulário de envio, estou tentando usar o listado no final desta página: link

    
por w00t 27.08.2012 / 17:11

2 respostas

4

Em relação a solicitações POST: Talvez você não tenha criado os diretórios 0 1 2 3 4 5 6 7 8 9 no seu diretório de destino de upload?

Você sempre pode usar DAV para pedidos PUT, você já os compilou em seu 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;

}

E você precisará disso (em http ou local):

client_max_body_size 10000m;

Agora, experimente:

curl -T ubuntu-10.04.4-alternate-amd64.iso http://localhost/upload/blah2

Felicidades! Georg

    
por 08.12.2012 / 12:56
0

O módulo de upload de terceiros não suporta PUT. Se você quiser usar os uploads de PUT, deve fazê-lo usando o manipulador de upload padrão do nginx.

    
por 27.08.2012 / 17:48

Tags