Welcome! Log In Create A New Profile

Advanced

Nginx Tornado File Upload

July 14, 2011 05:30AM
I am trying to upload file via nginx_upload_module 2.2.0. I have nginx 1.0.4 setup as a reverse proxy with a tornado server at the backend. Below is my nginx.conf :

#user nobody;
worker_processes 1;

error_log /var/log/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

pid /var/log/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
index index.html
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] $request '
# '"$status" $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

gzip on;

upstream frontends {
server 127.0.0.1:8888;
}



server {
listen 80;
server_name localhost;

#charset koi8-r;

# Allow file uploads max 50M for example
client_max_body_size 50M;

#access_log logs/host.access.log main;

#POST URLn
location /upload {
# Pass altered request body to this location
upload_pass @after_upload;

# Store files to this directory
upload_store /tmp;

# Allow uploaded files to be read only by user
upload_store_access user:rw;

# Set specified fields in request body
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”;

# Inform backend about hash and size of a file
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 “some_hidden_field_i_care_about”;

upload_cleanup 400 404 499 500-505;
}

location / {
root /opt/local/html;
}


location @after_upload {
proxy_pass http://127.0.0.1:8888;
}

}
}

I have already tested the setup, and nginx does forward the request to tornado. But when I try to upload the file it gives me a 400: Bad Request http status code. With the tornado log stating that, it's missing the upfile.path in the request. And when I try to go to the folder where nginx should have supposedly stored the uploaded file it isn't there. And hence the 400 error.

Can anyone point why is nginx not storing the file at the specified directory /tmp ?

Tornado Log : WARNING:root:400 POST /upload (127.0.0.1): Missing argument upfile_path WARNING:root:400 POST /upload (127.0.0.1) 2.31ms

Nginx Error Log : 127.0.0.1 - - [14/Jul/2011:13:14:31 +0530] "POST /upload HTTP/1.1" 400 73 "http://127.0.0.1/" "Mozilla/5.0 (X11; Linux i686; rv:6.0) Gecko/20100101 Firefox/6.0"
Subject Author Posted

Nginx Tornado File Upload

akash.gangil July 14, 2011 05:30AM

Re: Nginx Tornado File Upload

Francis Daly July 14, 2011 02:06PM

Re: Nginx Tornado File Upload

akash.gangil July 14, 2011 02:22PM

Re: Nginx Tornado File Upload

Francis Daly July 14, 2011 07:40PM

Re: Nginx Tornado File Upload

akash.gangil July 15, 2011 02:27AM

Re: Nginx Tornado File Upload

akash.gangil July 15, 2011 02:37AM

Re: Nginx Tornado File Upload

walterwefft July 15, 2011 03:36AM

Re: Nginx Tornado File Upload

akash.gangil July 15, 2011 03:37AM

Re: Nginx Tornado File Upload

Francis Daly July 15, 2011 04:10AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 288
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready