告訴 nginx 對特定 PHP 文件進行 SSL 加密

告訴 nginx 對特定 PHP 文件進行 SSL 加密

我已經使用以下設定設定了我的伺服器:

server {
   server_name www.example.com
   listen 443;
   listen 80;

   location /login\.php
   {
   rewrite ^(.*) https://www.example.com/login.php$1 last;        
   }

   .. other settings
}

但是,透過此設置,我收到重定向錯誤(重定向太多)。有沒有辦法告訴 nginx,如果我有文件 login.php,我需要 SSL,並且所有其他文件都在沒有它的情況下提供服務?

答案1

從 nginx 0.7.14 開始,您可以為 http 和 https 服務建立緊湊的配置,而無需拆分為單獨的伺服器 {} 區塊:

listen 80;
listen 443 ssl;

# rest ssl configuration...

如果您想保護多個位置 - 只需檢查方案並使用“返回”或“重寫”進行重定向:

location = /login.php {

      if($scheme = "http") {
              rewrite ^ https://$host$request_uri? permanent;
      }

      ...
}

答案2

您可以(請參閱其他答案),但通常最好對所有內容進行加密 - 安全地傳輸使用者名稱和密碼,然後以明文形式向它們提供完整帳戶存取 cookie 幾乎與根本不加密一樣危險。

作為一個例子來說明它是多麼危險,請參閱此處的一個程序,該程序利用此錯誤自動擁有 twitter / facebook / google / 等用戶 -->http://codebutler.com/firesheep

答案3

listen 80;listen 443;放在單獨的server區塊中。

SSL配置(我假設它在你的“..其他設定”中)應該只進入server正在偵聽連接埠 443 的區塊。

相關內容