当root文件中存在SSL文件夹时的HTTPS?

时间:2014-03-03 11:53:47

标签: ssl nginx https subdomain

我想在nginx中为某些子域强制使用HTTPS。当我创建一个需要HTTPS的新子域时,我也不想编辑.conf文件。如果根目录中存在SSL文件夹或与其等效的东西,是否可以强制使用HTTPS?因此,我需要做的就是在新子域上启用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周围的事情。

2 个答案:

答案 0 :(得分:0)

我认为您不能仅基于目录的存在来启用SSL。但您可以使用文件globbing来扩展配置:

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

只需在目录中删除一个最小文件即可。

(请注意,您仍然需要设置证书,最有可能是基于每个虚拟主机 - 而且这些证书不应该包含在文档根目录中。)

答案 1 :(得分: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语句,但这没关系,因为它现在有效。