Carga de Nginx PUT y POST

Carga de Nginx PUT y POST

Estoy intentando que nginx acepte los métodos POST y PUT para cargar archivos. He compilado nginx_upload_module-2.2.0.

No encuentro cómo hacerlo. Simplemente quiero usar solo nginx para esto, sin proxy inverso, ningún otro backend y sin php.

¿Es esto posible?

esta es mi configuración:

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

Y como formulario de carga, estoy intentando utilizar el que aparece al final de esta página:http://grid.net.ru/nginx/upload.en.html

Respuesta1

Con respecto a las solicitudes POST: ¿Quizás no creó los directorios 0 1 2 3 4 5 6 7 8 9 en su directorio de destino de carga?

Siempre puedes usar DAV para solicitudes PUT, ya lo tienes compilado en tu 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;

}

Y necesitarás esto (en http o ubicación):

client_max_body_size 10000m;

Ahora inténtalo:

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

¡Salud! Jorge

Respuesta2

El módulo de carga de terceros no admite PUT en absoluto. Si desea utilizar cargas PUT, debe hacerlo utilizando el manejo de carga estándar de nginx.

información relacionada