Ubuntu

nginx 強制 ssl 異常

  • December 15, 2014

我正在使用安裝了 nginx 並在主域上安裝了 SSL 的 Ubuntu 14.04,效果很好。我什至用主域停放了 5-6 個其他域。如果我訪問這些域中的任何一個,我會收到 SSL 警告,因為我已使用以下配置在 nginx 配置中強制使用 HTTPS:

我添加了以下內容/etc/nginx-sp/vhosts.d/APPNAME.d/redirect_to_https.nonssl_conf

return 302 https://$host$request_uri;

這正確地強制提供 HTTPS 版本。

我如何實現一些條件,例如:如果域main.example.com然後重定向到 HTTPS 版本,否則顯示 HTTP 版本

任何創建if語句以返回站點的 https 版本的嘗試都將導致重定向循環(由於您的條件,server_name在重定向後不會更改,因此將始終匹配條件並再次重定向……)。

話雖如此,我建議為每個虛擬主機/子域設置單獨的配置文件(我從您目前的設置中推斷,您使用的是單一的包羅萬象的配置 - 如果不是這種情況,請更新您的相應地提問)

您還可以在下面找到一種更優雅的重定向到您希望始終通過 https 提供服務的域/子域上的 https 的方式:

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

例如,您可以創建以下內容:

server {
 server_name nonssldomain.com anothernonssldomain.com;
 listen 80;
          }

在一個名為 non_ssl_sites.conf (或任何你喜歡的)的文件中,然後是另一個:

server {
 server_name ssldomain.com;
 listen 80;
 listen 443 ssl;

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

在一個名為 ssl_sites.conf 的文件中(或者再次,無論你喜歡什麼)

引用自:https://serverfault.com/questions/652608