Duplicated response body with fastcgi

Etienne Robillard tkadm30 at yandex.com
Sat Jul 15 08:55:57 UTC 2017


I fixed this issue. I found that uWSGI is a far better choices than 
FastCGI for serving my Django app with nginx. :)

Cheers,

E


Le 2017-07-14 à 08:32, Etienne Robillard a écrit :
> How can one debug the upstream FastCGI response from nginx?
>
>
>
> Le 2017-07-13 à 10:25, Etienne Robillard a écrit :
>> Hi,
>> I'm trying to setup a Django app with nginx using fastcgi. Here's my 
>> config:
>>
>> # configuration file /etc/nginx/nginx.conf:
>> user www-data;
>> worker_processes 4;
>> pid /run/nginx.pid;
>>
>> events {
>>     worker_connections 512;
>>     multi_accept on;
>>     use epoll;
>> }
>>
>> http {
>>
>>     ##
>>     # Basic Settings
>>     ##
>>
>>     sendfile on;
>>     tcp_nopush on;
>>     tcp_nodelay on;
>>     keepalive_timeout 80;
>>     types_hash_max_size 2048;
>>     # server_tokens off;
>>
>>     # server_names_hash_bucket_size 64;
>>     # server_name_in_redirect off;
>>
>>     include /etc/nginx/mime.types;
>>     default_type application/octet-stream;
>>
>>     ##
>>     # SSL Settings
>>     ##
>>
>>     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
>>     ssl_prefer_server_ciphers on;
>>
>>     ##
>>     # Logging Settings
>>     ##
>>
>>     access_log /var/log/nginx/access.log;
>>     error_log /var/log/nginx/error.log;
>>
>>     ##
>>     # Gzip Settings
>>     ##
>>
>>     gzip off;
>>     gzip_disable "msie6";
>>
>>     # gzip_vary on;
>>     # gzip_proxied any;
>>     # gzip_comp_level 6;
>>     # gzip_buffers 16 8k;
>>     # gzip_http_version 1.1;
>>     # gzip_types text/plain text/css application/json 
>> application/javascript text/xml application/xml application/xml+rss 
>> text/javascript;
>>
>>     ##
>>     # Virtual Host Configs
>>     ##
>>
>>     include /etc/nginx/conf.d/development.conf;
>>     #include /etc/nginx/sites-enabled/*;
>> }
>>
>>
>> #mail {
>> #    # See sample authentication script at:
>> #    # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
>> #
>> #    # auth_http localhost/auth.php;
>> #    # pop3_capabilities "TOP" "USER";
>> #    # imap_capabilities "IMAP4rev1" "UIDPLUS";
>> #
>> #    server {
>> #        listen     localhost:110;
>> #        protocol   pop3;
>> #        proxy      on;
>> #    }
>> #
>> #    server {
>> #        listen     localhost:143;
>> #        protocol   imap;
>> #        proxy      on;
>> #    }
>> #}
>>
>> # configuration file /etc/nginx/mime.types:
>>
>> types {
>>     text/html                             html htm shtml;
>>     text/css                              css;
>>     text/xml                              xml;
>>     image/gif                             gif;
>>     image/jpeg                            jpeg jpg;
>>     application/javascript                js;
>>     application/atom+xml                  atom;
>>     application/rss+xml                   rss;
>>
>>     text/mathml                           mml;
>>     text/plain                            txt;
>>     text/vnd.sun.j2me.app-descriptor      jad;
>>     text/vnd.wap.wml                      wml;
>>     text/x-component                      htc;
>>
>>     image/png                             png;
>>     image/tiff                            tif tiff;
>>     image/vnd.wap.wbmp                    wbmp;
>>     image/x-icon                          ico;
>>     image/x-jng                           jng;
>>     image/x-ms-bmp                        bmp;
>>     image/svg+xml                         svg svgz;
>>     image/webp                            webp;
>>
>>     application/font-woff                 woff;
>>     application/java-archive              jar war ear;
>>     application/json                      json;
>>     application/mac-binhex40              hqx;
>>     application/msword                    doc;
>>     application/pdf                       pdf;
>>     application/postscript                ps eps ai;
>>     application/rtf                       rtf;
>>     application/vnd.apple.mpegurl         m3u8;
>>     application/vnd.ms-excel              xls;
>>     application/vnd.ms-fontobject         eot;
>>     application/vnd.ms-powerpoint         ppt;
>>     application/vnd.wap.wmlc              wmlc;
>>     application/vnd.google-earth.kml+xml  kml;
>>     application/vnd.google-earth.kmz      kmz;
>>     application/x-7z-compressed           7z;
>>     application/x-cocoa                   cco;
>>     application/x-java-archive-diff       jardiff;
>>     application/x-java-jnlp-file          jnlp;
>>     application/x-makeself                run;
>>     application/x-perl                    pl pm;
>>     application/x-pilot                   prc pdb;
>>     application/x-rar-compressed          rar;
>>     application/x-redhat-package-manager  rpm;
>>     application/x-sea                     sea;
>>     application/x-shockwave-flash         swf;
>>     application/x-stuffit                 sit;
>>     application/x-tcl                     tcl tk;
>>     application/x-x509-ca-cert            der pem crt;
>>     application/x-xpinstall               xpi;
>>     application/xhtml+xml                 xhtml;
>>     application/xspf+xml                  xspf;
>>     application/zip                       zip;
>>
>>     application/octet-stream              bin exe dll;
>>     application/octet-stream              deb;
>>     application/octet-stream              dmg;
>>     application/octet-stream              iso img;
>>     application/octet-stream              msi msp msm;
>>
>> application/vnd.openxmlformats-officedocument.wordprocessingml.document 
>> docx;
>> application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
>> application/vnd.openxmlformats-officedocument.presentationml.presentation 
>> pptx;
>>
>>     audio/midi                            mid midi kar;
>>     audio/mpeg                            mp3;
>>     audio/ogg                             ogg;
>>     audio/x-m4a                           m4a;
>>     audio/x-realaudio                     ra;
>>
>>     video/3gpp                            3gpp 3gp;
>>     video/mp2t                            ts;
>>     video/mp4                             mp4;
>>     video/mpeg                            mpeg mpg;
>>     video/quicktime                       mov;
>>     video/webm                            webm;
>>     video/x-flv                           flv;
>>     video/x-m4v                           m4v;
>>     video/x-mng                           mng;
>>     video/x-ms-asf                        asx asf;
>>     video/x-ms-wmv                        wmv;
>>     video/x-msvideo                       avi;
>> }
>>
>> # configuration file /etc/nginx/conf.d/development.conf:
>> server {
>>
>>     # static medias web server configuration, for development
>>     # and testing purposes.
>>
>>     listen       80;
>>     server_name  localhost;
>>     error_log /var/log/nginx/error_log; #debug
>>     #access_log  /var/log/nginx/gthc.org/access.log;
>>     root /home/erob/www/isotopesoftware.ca;
>>     #autoindex on;
>>
>>     location / {
>>     #    # host and port to fastcgi server
>>         fastcgi_pass 127.0.0.1:8808; # 8808=gthc.org; 8801=tm
>>         include fastcgi_params;
>>         autoindex on;
>>     #    # rewrite /CamelCase to /wiki/CamelCase
>>     #    rewrite ^/(.*[A-Z][a-z]*)$ /wiki$1 last;
>>         #etag on;
>>     #fastcgi_pass_header $http_if_none_match;
>>     }
>>
>>
>>     # debug url rewriting to the error log
>>     rewrite_log on;
>>
>>     location /media {
>>         autoindex on;
>>         gzip on;
>>     }
>>
>>     location /pub {
>>         autoindex on;
>>         gzip on;
>>     }
>>
>>     location /webalizer {
>>         autoindex on;
>>         gzip on;
>>     #auth_basic "Private Property";
>>     #auth_basic_user_file /etc/nginx/.htpasswd;
>>         allow 67.68.76.70;
>>     deny all;
>>     }
>>
>>     location /documentation {
>>         autoindex on;
>>         gzip on;
>>     }
>>
>>     location /moin_static184 {
>>     autoindex on;
>>     gzip on;
>>     }
>>     location /favicon.ico {
>>     empty_gif;
>>     }
>>     location /robots.txt {
>>          root /home/www/isotopesoftware.ca;
>>     }
>>     location /sitemap.xml {
>>     root /home/www/isotopesoftware.ca;
>>     }
>>
>>     #location /public_html {
>>     # root /home/www/;
>>     # autoindex on;
>>     #}
>>     # redirect server error pages to the static page /50x.html
>>     #error_page 404 /404.html;
>>     #error_page 403    /403.html;
>>     #error_page 500 502 503 504  /50x.html;
>>     #location = /50x.html {
>>     #    root   /var/www/nginx-default;
>>     #}
>>
>>     include conf.d/moinmoin.conf;
>>     include conf.d/livestore.conf;
>> }
>>
>>
>> # configuration file /etc/nginx/fastcgi_params:
>> fastcgi_param  PATH_INFO          $fastcgi_script_name;
>> fastcgi_param  QUERY_STRING       $query_string;
>> fastcgi_param  REQUEST_METHOD     $request_method;
>> fastcgi_param  CONTENT_TYPE       $content_type;
>> fastcgi_param  CONTENT_LENGTH     $content_length;
>>
>> fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
>> fastcgi_param  REQUEST_URI        $request_uri;
>> fastcgi_param  DOCUMENT_URI       $document_uri;
>> fastcgi_param  DOCUMENT_ROOT      $document_root;
>> fastcgi_param  SERVER_PROTOCOL    $server_protocol;
>>
>> fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
>> fastcgi_param  SERVER_SOFTWARE    nginx;
>>
>> fastcgi_param  REMOTE_ADDR        $remote_addr;
>> fastcgi_param  REMOTE_PORT        $remote_port;
>> #fastcgi_param  REMOTE_USER      $remote_user;
>> fastcgi_param  SERVER_ADDR        $server_addr;
>> fastcgi_param  SERVER_PORT        $server_port;
>> fastcgi_param  SERVER_NAME        $server_name;
>>
>>
>> #XXX
>> #fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match;
>> #fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since;
>>
>>
>> # PHP only, required if PHP was built with --enable-force-cgi-redirect
>> # fastcgi_param  REDIRECT_STATUS    200;
>>
>> fastcgi_send_timeout 90;
>> fastcgi_read_timeout 90;
>> fastcgi_connect_timeout 40;
>> fastcgi_cache_valid 200 304 10m;
>> #fastcgi_buffer_size 128k;
>> #fastcgi_buffers 8 128k;
>> #fastcgi_busy_buffers_size 256k;
>> #fastcgi_temp_file_write_size 256k;
>>
>>
>> # configuration file /etc/nginx/conf.d/moinmoin.conf:
>>
>>
>> location /wiki {
>>
>>
>>       if ($uri ~ ^/wiki(.*)?){
>>          set $wiki_url $1;
>>       }
>>       # host and port to fastcgi server
>>       fastcgi_pass 127.0.0.1:8807; # 8808=gthc.org; 8801=tm; 
>> 8807=moinmoin
>>       #include fastcgi_params;
>>       fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
>>       fastcgi_param  SERVER_SOFTWARE    nginx;
>>       fastcgi_param  QUERY_STRING       $query_string;
>>       fastcgi_param  REQUEST_METHOD     $request_method;
>>       fastcgi_param  CONTENT_TYPE       $content_type;
>>       fastcgi_param  CONTENT_LENGTH     $content_length;
>>       fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
>>       #fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
>>       fastcgi_param  REQUEST_URI        $request_uri;
>>       fastcgi_param  DOCUMENT_URI       $document_uri;
>>       fastcgi_param  DOCUMENT_ROOT      $document_root;
>>       fastcgi_param  SERVER_PROTOCOL    $server_protocol;
>>       fastcgi_param  REMOTE_ADDR        $remote_addr;
>>       fastcgi_param  REMOTE_PORT        $remote_port;
>>       fastcgi_param  SERVER_ADDR        $server_addr;
>>       fastcgi_param  SERVER_PORT        $server_port;
>>       fastcgi_param  SERVER_NAME        $server_name;
>>       fastcgi_param PATH_INFO $wiki_url;
>>       fastcgi_param SCRIPT_NAME /wiki;
>> }
>> #location /moin_static184 {
>> #    root /home/www/isotopesoftware.ca;
>> #    autoindex on;
>> #}
>>
>>
>>
>> # configuration file /etc/nginx/conf.d/livestore.conf:
>>
>>
>> location /store {
>>
>>
>>       if ($uri ~ ^/store(.*)?){
>>          set $store_url $1;
>>       }
>>       # host and port to fastcgi server
>>       fastcgi_pass 127.0.0.1:8809; # 8808=gthc.org; 8801=tm; 
>> 8807=moinmoin
>>       #include fastcgi_params;
>>       fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
>>       fastcgi_param  SERVER_SOFTWARE    nginx;
>>       fastcgi_param  QUERY_STRING       $query_string;
>>       fastcgi_param  REQUEST_METHOD     $request_method;
>>       fastcgi_param  CONTENT_TYPE       $content_type;
>>       fastcgi_param  CONTENT_LENGTH     $content_length;
>>       fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
>>       #fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
>>       fastcgi_param  REQUEST_URI        $request_uri;
>>       fastcgi_param  DOCUMENT_URI       $document_uri;
>>       fastcgi_param  DOCUMENT_ROOT      $document_root;
>>       fastcgi_param  SERVER_PROTOCOL    $server_protocol;
>>       fastcgi_param  REMOTE_ADDR        $remote_addr;
>>       fastcgi_param  REMOTE_PORT        $remote_port;
>>       fastcgi_param  SERVER_ADDR        $server_addr;
>>       fastcgi_param  SERVER_PORT        $server_port;
>>       fastcgi_param  SERVER_NAME        $server_name;
>>       fastcgi_param PATH_INFO $store_url;
>>       fastcgi_param SCRIPT_NAME /store;
>> }
>> location /satchmo_media {
>>     root /home/www/livestore;
>>     autoindex on;
>>     gzip on;
>>     expires 30d;
>> }
>>
>> The problem is that nginx is duplicating the response body stream for 
>> the /store location. This issue does not happen in WSGI mode.
>>
>> Any ideas how to fix?
>>
>> Thank you in advance,
>>
>> E
>>
>>
>>
>> _______________________________________________
>> nginx mailing list
>> nginx at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx
>>
>

-- 
Etienne Robillard
tkadm30 at yandex.com
http://www.isotopesoftware.ca/



More information about the nginx mailing list