Маршрутизация http на https с использованием nginx в качестве обратного прокси - PullRequest
0 голосов
/ 12 января 2011

У меня есть сайт, на котором есть страница входа, с которой мне нужно использовать https.Я управляю сайтом, используя django на apache с внешним интерфейсом nginx, действующим в качестве обратного прокси-сервера и выполняющим две вещи:

1) обслуживающий весь статический контент django 2) настроенный для поддержки ssl

ssl все настроено и, кажется, работает правильно .... т.е. я могу перейти к обоим

http://www.mysite.com/login

и

https://www.mysite.com/login

без проблем, и https просит меня проверить сертификат и т. Д.

моя проблема в том, что я пытаюсь настроить nginx так, чтобы было невозможно ввести пароль на странице входа, которая неHTTPS.я не могу заставить его сделать это перенаправить.

Может кто-нибудь, пожалуйста, объясните, как это работает

ssl работает на 443 и nginx перенаправляет на порт 80

спасибо

Ответы [ 2 ]

1 голос
/ 12 января 2011

Как насчет перенаправления URL http://www.mysite.com/login на https : //www.mysite.com/login на уровне прокси nginx, это позволит избежать загрузки любого механизма django, что делает намного быстрее и отзывчивее.

Вы можете добавить в свой конфиг nginx

  location /login {
    # redirect to secure page [permanent | redirect]
    rewrite ^/login(.*)  https://www.mysite.com/login permanent;
  }

в основном перенаправить любой / войти в его https conterpart.

надеюсь, это поможет.

UPDATE

убедитесь, что вы слушаете порт 443

server {
   listen yourIP:80;
   server_name yourdomain.com;

   # redirect /login to the https page
   location /login {
     # redirect to secure page [permanent | redirect]
     rewrite ^/login(.*)  https://www.mysite.com/login permanent;
   }
}


#the HTTPS section listening to port 443 
server {
   listen yourIP:443;
   server_name yourdomain.com;

   location / {
     #your proxy code or root setting 
   }
}
1 голос
/ 12 января 2011

Эти перенаправления лучше подходят для конфигурации в вашем веб-приложении, а не в Nginx, потому что, хотя вы можете жестко перенаправлять перенаправления в Nginx, их проще настроить в Python, где они напрямую связаны с вашими представлениями.

Просто мое мнение, конечно.

В djangosnippets существует множество промежуточных программ для перенаправления SSL, которые перенаправляют URL-адрес на https.

Вот один с декоратором, так что вы можете просто сделать @secure на ваш взгляд. http://djangosnippets.org/snippets/1999/

Я пересонально использую этот слегка модифицированный http://djangosnippets.org/snippets/880/ где я установил определенные пути URL в SSL в файле settings.py.

Например, в моем конфе я имею: SSL_URLS = ( '/cart/', '/checkout/', '/accounts/' )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...