Показаны сообщения с ярлыком nginx. Показать все сообщения
Показаны сообщения с ярлыком nginx. Показать все сообщения

понедельник, 19 сентября 2011 г.

nginx security link в python

Генерирование секретной строки для модуля nginx security_link в python

import base64
import hashlib

base64.b64encode(hashlib.md5("SECRET").digest()).replace('+', '-').replace('/', '_').replace("=", "")

четверг, 15 сентября 2011 г.

nginx include html to html - server side includes - ssi

Решение server side includes нужно для создание просто html-страничек, например что то наподобие:
<!--# include file="header.html" -->
Ваша хтмэлина
<!--# include file="footer.html" -->
Раньше все использовали решение через apache ssi, но есть решение в nginx: http://sysoev.ru/nginx/docs/http/ngx_http_ssi_module.html Использовать легко (смотрите документацию по ссылке - и поехали!):

location / {
        ssi  on;
        ...
    } 

пятница, 18 декабря 2009 г.

django nginx fastcgi ssl https

Здесь представлена инструкция по тому, как настроить django+nginx+fastcgi+ssl+https
Что хотелось?
Хотелось сделать шифрование на странице логина и регистрации принудительное, а шифрование других страниц по выбору пользователя
Что надо сделать ?
  • В настройках nginx не забыть добавить параметр для fastcgi, чтобы в django можно было получать переменную os.environ['HTTPS']. Добавляется такой параметр: fastcgi_param HTTPS on;
  • В django добавляем middleware такого вида (основная реализация позаимстована отсюда: http://www.djangosnippets.org/snippets/240/):
    SSL = 'SSL'

    class SSLRedirectMiddleware(object):

    def process_view(self, request, view_func, view_args, view_kwargs):
    if SSL in view_kwargs:
    secure = view_kwargs[SSL]
    del view_kwargs[SSL]
    else:
    secure = False
    user = request.user
    if user.is_authenticated():
    try:
    profile = user.get_profile()
    secure = profile.is_secure
    except:
    pass

    if not secure == self._is_secure(request):
    return self._redirect(request, secure)

    def _is_secure(self, request):
    if request.is_secure():
    return True

    #Handle the Webfaction case until this gets resolved in the request.is_secure()
    if 'HTTP_X_FORWARDED_SSL' in request.META:
    return request.META['HTTP_X_FORWARDED_SSL'] == 'on'

    return False

    def _redirect(self, request, secure):
    protocol = secure and "https" or "http"
    newurl = "%s://%s%s" % (protocol, get_host(request), request.get_full_path())
    if settings.DEBUG and request.method == 'POST':
    raise RuntimeError, \
    """Django can't perform a SSL redirect while maintaining POST data.
    Please structure your views so that redirects only occur during GETs."""

    return HttpResponsePermanentRedirect(newurl)
  • Во views для login я указал такую функцию
    from django.views.decorators.csrf import csrf_exempt

    @csrf_exempt
    def secure_login(request, *args, **kwargs):
    return simple_login(request, *args, **kwargs)
    т.к. я не смог победить проблему совместимости csrf + https
  • Осталось только в urls.py указать
       url(r'^login/$', 'apps.accounts.views.secure_login',
    {'template_name': 'registration/login.html',
    'redirect_field_name': REDIRECT_FIELD_NAME,
    'authentication_form': AuthenticationForm, 'SSL': True},
    name='auth_login'),
    Здесь стоит обратить внимание на посылку параметра SSL=True
Это должно работать:-)