2014-03-03 19 views
0

我想爲nginx中的某些子域強制使用HTTPS。當我創建需要HTTPS的新子域時,我也不想編輯.conf文件。如果SSL文件夾存在於根目錄或與其相同的東西中,是否可以強制使用HTTPS?所以我必須做的,以啓用新的子域上的HTTPS是添加一個新的文件夾或類似的東西?當SSL文件夾存在於根目錄時HTTPS?

這裏是我的nginx.conf文件:

#HTTP DOMAIN.COM 
    server { 
     listen    80; 
     server_name   *.domain.com; 
     root     /var/www/$http_host; 


      location /ssl { 
        rewrite^https://$http_host/$1 redirect; 
      } 

編輯: 我一直在瞎搞有點用的符號鏈接,但沒有運氣呢。這是我所做的新配置:

server { 
    listen    80; 
    server_name   *.domain.com; 
    root    /var/www/$http_host; 

     location /var/www/ssl/$http_host { 
       rewrite https://$http_host/$1 redirect; 
     } 

    include    error_page; 
    include    location_php; 
} 

我接近我的答案了嗎?

編輯: 我基本上想要的是能夠使用ssl而不必更改我的.conf文件。 我需要做的所有啓用HTTPS都是在docroot的某處進行更改。

+0

您能否提供示例URL的重定向內容和不重定向的內容? –

+0

以及我想sub2.domain.com是https,當我有一個SSL文件夾那裏我想能夠只是去http://sub2.domain.com,它會自動看到有一個SSL文件夾在所以它將被重定向到https://sub2.domain.com – Xenonbart

回答

0

我明白了!這是配置文件:

server { 
    listen   80; 
    server_name  *.domain.com; 
    root   /var/www/$host; 

    if (-e /var/www/config/ssl/$host) { 
      rewrite^https://$host$request_uri? permanent; 
    } 

    include   error_pages; 
    include   php_config; 
} 

我仍然不得不使用if語句,但這是正確的,因爲它現在可以工作。

0

我不認爲您可以僅基於目錄的存在來啓用SSL。但您可以使用文件匹配來擴展配置:

include vhosts/*.conf 
include vhosts/ssl/*.conf 

只需將最小文件放入目錄即可。

(請注意,您仍然需要設置證書,很可能是以每個虛擬主機爲基礎的 - 而且這些不應該成爲文檔根目錄)。

+0

我一直在四處尋找,並找到了某種教程(這裏是鏈接http://publications.jbfavre.org/web/nginx- vhosts-automatiques-avec-SSL-et-authentification.en)關於動態SSL。它與我想要的非常接近,但如果在教程中使用它們。有沒有辦法避免使用IF並仍然實現相同? (我不習慣使用nginx) – Xenonbart

相關問題