Генерирование секретной строки для модуля nginx security_link в python
import base64
import hashlib
base64.b64encode(hashlib.md5("SECRET").digest()).replace('+', '-').replace('/', '_').replace("=", "")
Показаны сообщения с ярлыком nginx. Показать все сообщения
Показаны сообщения с ярлыком nginx. Показать все сообщения
понедельник, 19 сентября 2011 г.
четверг, 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;
...
}
Ярлыки:
nginx
пятница, 18 декабря 2009 г.
django nginx fastcgi ssl https
Здесь представлена инструкция по тому, как настроить django+nginx+fastcgi+ssl+https
Что хотелось?
Хотелось сделать шифрование на странице логина и регистрации принудительное, а шифрование других страниц по выбору пользователя
Что надо сделать ?
Что хотелось?
Хотелось сделать шифрование на странице логина и регистрации принудительное, а шифрование других страниц по выбору пользователя
Что надо сделать ?
- Установить настройки в nginx и создать ключ. Инструкция дана здесь http://wiki.enchtex.info/howto/nginx_ssl
- В настройках 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 + https
@csrf_exempt
def secure_login(request, *args, **kwargs):
return simple_login(request, *args, **kwargs) - Осталось только в urls.py указать
url(r'^login/$', 'apps.accounts.views.secure_login',
Здесь стоит обратить внимание на посылку параметра SSL=True
{'template_name': 'registration/login.html',
'redirect_field_name': REDIRECT_FIELD_NAME,
'authentication_form': AuthenticationForm, 'SSL': True},
name='auth_login'),
Подписаться на:
Сообщения (Atom)