Hi Robert,

Thanks a lot. This is working :-)

I just added
uwsgi_param UWSGI_SCHEME https;


as you suggested.


On 07/21/2011 06:38 AM, Roberto De Ioris wrote:
> 
>> Hi,
>>
>> I'm not sure whether I have to change my django configuration or my
>> nginx cofiguration.
>> (Thus posted to gmane.comp.python.django.user and to
>> gmane.comp.web.nginx.english)
>>
>> I have following setup:
>>
>> - nginx listening on https
>> - most static contents like .css .js images served by nginx
>> - everything else forwarded to django
>>
>> all .html files are in fact templated and should thus be treated by
>> django. Additionally I wanted to grant access to the contents onlyy to
>> authorized users.
>>
>>
>> djangu urls.py setup
>> -----------------------
>>
>> from django.contrib.auth.decorators import login_required
>> from django.views.generic.simple import direct_to_template
>>
>>
>>  url(r'^(?P<template>.*\.html)$',
>>      login_required(direct_to_template),
>>  ),
>>
>>
>> nginx is configured with
>> -------------------------
>>
>> location ~ \.*.html$ {
>> uwsgi_pass django;
>> uwsgi_param  QUERY_STRING       $query_string;
>> uwsgi_param  REQUEST_METHOD     $request_method;
>> uwsgi_param  CONTENT_TYPE       $content_type;
>> uwsgi_param  CONTENT_LENGTH     $content_length;
>>
>> uwsgi_param  REQUEST_URI        $request_uri;
>> uwsgi_param  PATH_INFO          $document_uri;
>> uwsgi_param  DOCUMENT_ROOT      $document_root;
>> uwsgi_param  SERVER_PROTOCOL    $server_protocol;
>>
>> uwsgi_param  REMOTE_ADDR        $remote_addr;
>> uwsgi_param  REMOTE_PORT        $remote_port;
>> uwsgi_param  SERVER_PORT        $server_port;
>> uwsgi_param  SERVER_NAME        $server_name;
>> }
>>
>> uwsgi is called with
>> ----------------------
>> uwsgi -s host:port  -H virtual_env_python --pidfile uwsgi.pid \
>>     --pp ..-w wsgi_module
>>
>> The problem is, that the first request to
>>
>> https://mysite:myport/index.html
>>
>> is detected as non authenticated access. (that's what I want)
>> and thus django tries to redirect to  redirected to the authentification
>> page (that's also what I want)
>> which should be
>>
>> Django should redirect to
>> https://mysite:myport/accounts/login/?next=/index.html
>>
>> Unfortunately it redirects to
>> http://mysite:myport/accounts/login/?next=/index.html
>>
>>
>> Therefore I get the error message
>> "400 Bad Request The plain HTTP request was sent to HTTPS port"
>>
>> Is there any variable that I can use to tell django, that the protocol
>> is https and not http for the login pages
>>
>> Ideally I would like to have something like an nginx parameter being
>> passed, such that django knows whether the request is coming from an
>> nginx https server ( all redirects should be https:host:port )
>> or from an nginx http server.
>>
>>
>> Does anyone have a similiar setup or has some ideas?
>>
> 
> 
> 
> You can force the protocol using the HTTPS variable (standard, but not
> enabled in nginx) or you can force the protocol to htts using the
> UWSGI_SCHEME variable
> 
> http://projects.unbit.it/uwsgi/wiki/uWSGIVars
> 
> 
> 


-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to