我想在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周围的事情。
答案 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语句,但这没关系,因为它现在有效。