资源说明:Demo app for upload using X-Progress headers
# Readme : Contents 1. What and Why 2. Installation 3. Configuration * Nginx configuration in details * Possible other options of httpd configuration - Apache 2.*, 4. Problems 5. Summary # What && Why ? This is more proof-of-concept that X-Progress is good stuff ## How the demo wroks ? 1. go to `http://uploaddemo.com/upload_progress/new` 2. select file and click upload 3. now you can point the name of file 4. look at the progression bar 5. You can now ( while uploading ) type name of the file in text box 6. after it loads, file path on server will be displayed with name ( name is sent to server when file is uploaded ) # Installation First of all you will need few things: 1. nginx (0.6.13 can be obtain from [http://nginx.net](http://nginx.net "nginx home")) 2. nginx-upload-progress-module (`git clone https://github.com/masterzen/nginx-upload-progress-module.git` to get source) 3. rvmsudo passenger-install-nginx-module ( if installing without rvm skip rvm) 4. choose option "2" point to nginx source and add module `--add-module=/path/to/nginx_uploadprogress_module/` 5. NomNomNom it is build for you... ready! 6. add to your nginx http scope config passenger_root/passenger-3.0.2; passenger_ruby /ruby; passenger_default_user nobody; ## testing the module go to `nginx_upload_progress_module/test` and run `client.sh 1 http://uploaddemo.com/progress` should show you how it works. ## Instalation of bundler, passenger 1. install ruby 2. install rvm ( or not, your choice :8 ) 3. install bundler `gem install bundler` 4. install passenger `gem install passenger` 5. run `bundler install` in app dir # Configuration ## etc/hosts ;) you don't have to but i tend to add new projects to /etc/hosts and add line `127.0.0.1 uploaddemo.com` ## nginx To configure it good you just need to add few things. http { upload_progress proxied 1m; This reserves upload_progress stash with 1 mb size. Rest is in our server config here is sample ( with passenger) server { listen 80; server_name uploaddemo.com; root /Users/kuba/Workspace/Ruby/upload_demo/public; #path to application point to public ofc :-F access_log /opt/nginx/logs/upload_demo_access.log; passenger_enabled on; rails_env development; location ^~ /progress { # report uploads tracked in the 'proxied' zone report_uploads proxied; track_uploads proxied 30s; } } Most important part is location of /progress this will be our point of requests to check status of uploaded files. ## apache ( possible, not tested ) here is apache config, not tested ( time issues ;X ) ServerName uploaddemo.com DocumentRoot "/Users/kuba/Workspace/Ruby/upload_demo/public" RailsEnv development RailsAllowModRewrite off # Problems * it worked well on nginx 0.6.13 but after "smart" upgrade to 0.9.4 what was forced after update of passenger it stopped and returns only status `starting`. I forked module and I will look if i can fix it. * suggestion is to deploy to apache / lighthttpd ( RFC comes from lighty implementation so probably it should work ;) # Summary It was fun to work with this technology, i enraged a bit with nginx 0.9.4 but rage is part of life ;))))Order allow,deny Allow from all # needed for tracking upload progess# enable tracking uploads in / TrackUploads On # enable upload progress reports in /progress ReportUploads On
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。