2012-12-06 291 views
0

我希望我的nginx能夠將所有不適合wp-admin文件夾的內容重定向到wp-login.php或從https://重定向到http ://(如果是https)。我的虛擬主機配置只是說Nginx的重定向如果不是wp-admin或wp-login.php

server{ 
     listen 80; 
     listen 443 ssl; 

然後關於服務器名稱,certi信息和錯誤頁面的一些事情。任何人都可以告訴我如何強制使用http而不是https到每個不是wp-admin的文件夾以及每個不是wp-login.php的文件?

+1

爲什麼不能讓你的訪問者和你說話了HTTPS,如果他們選擇這樣做? – willglynn

+1

因爲我只有一個自簽名的HTTPS證書。它僅用於登錄過程。 –

+2

[startssl如果](http://www.startssl.com/)從一種廣泛信任的CA提供免費證書該網站是一個有點混亂(並會嘗試向上銷售你),但它實際上是發出可用的證書。 – willglynn

回答

1

在您的服務器模塊,使用位置的規則來匹配/可溼性粉劑管理員//wp-login.php請求並重寫那些使用HTTPS,以及其他一切 - 如果這就是你想 - 重寫使用http。例如:

server { 
    listen 80; 
    listen 443; 
    server_name your.domain.name; 

    # your ssl configurations here... 
    # example: 
    ssl_session_timeout 10m; 
    ssl_protocols SSLv2 SSLv3 TLSv1; 
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; 
    ssl_prefer_server_ciphers on; 

    location/{ 
     rewrite^http://$server_name$request_uri? last; 
    } 

    location /wp-admin/ { 
     rewrite^https://$server_name$request_uri? last; 
    } 

    location = /wp-login.php { 
     rewrite^https://$server_name$request_uri? last; 
    } 

    # your other rules here... 

} 
2

我目前的解決方案是不重寫nginx中的URL,但讓Wordpress自己做這項工作。

我的nginx的配置爲允許HTTP和HTTPS,像你這樣的,這樣的人可以選擇他們想要的,因爲我使用的是不是每個人都信任CACERT證書。然後,我讓WordPress的強制登錄和管理會話重定向到https加入這wp-config.php

define('FORCE_SSL_ADMIN', true); 

這並不HTTPS重定向到http非管理頁面,雖然。但這並沒有什麼意義,因爲它不會避免證書警告:重定向只會在警告之後發生。另一方面,有些人(例如管理員)實際上已經導入了證書,並可能希望使用https的其他站點。

更多詳細信息請參見http://codex.wordpress.org/Administration_Over_SSL。我通過http://www.surlyjake.com/blog/2011/12/20/wordpress-https-secure-login-with-nginx/偶然發現了這個。