2011-01-12 52 views
0

我有有我需要使用HTTPS與登錄頁面的網站HTTPS。我正在使用Django在Apache與nginx的前端作爲反向代理做兩件事情的網站:路由HTTP使用nginx的反向代理

1)服務的所有Django的靜態內容 2)配置爲支持SSL

的SSL東西是所有設置和似乎工作正常....即我可以去這兩個

http://www.mysite.com/login

https://www.mysite.com/login

,沒有任何問題,和HTTPS要求我驗證證書等

我的問題是我試圖請將nginx設置爲無法在不是https的登錄頁面中輸入密碼。我無法讓它做到這一點重新指導。

有人可以解釋它是如何工作

的SSL是443運行,80

感謝

回答

1

這些重定向nginx的被轉發端口更適合配置在你的web應用程序,而不是Nginx的,因爲雖然你可能在Nginx中硬編碼重定向,但它更容易在Python中設置,它與你的視圖直接相關。

只是我當然意見。

有噸SSL的重定向djangosnippets將重定向的URL HTTPS中間件。

這裏有一個與裝飾,所以你可以做@secure對你的看法。 http://djangosnippets.org/snippets/1999/

我peresonally用這一個稍微http://djangosnippets.org/snippets/880/ 修改,我設置某些URL路徑是在settings.py文件SSL。

例如,在我的conf我:SSL_URLS = ('/cart/', '/checkout/', '/accounts/')

1

什麼重定向URL http://www.mysite.com/loginHTTPS:在nginx的代理級別//www.mysite.com/login,這將避免任何的Django機械被加載,使其更快速和響應。

你可以添加到您的nginx配置

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

basicly重定向任何/登錄到它的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 
    } 
} 
+0

由於某種原因,這是行不通的。之前,我插入此配置並重新啓動nginx的,要去「https://開頭正常工作後,我插入這個配置和啓動服務器,從http重定向://爲」 https://開頭的作品,但我得到一個網頁「無法連接」的錯誤。任何線索,怎麼回事? – josephmisiti 2011-01-13 05:19:21