您提到https://something.com/homeassistant作为子域。据我了解,子域类似于https://homeassistant.something.com,其中 homeassistant 是 something.com 的子域。然而,这似乎是一个小细节。
您是否使用 docker 进行设置?我已经使用这样的 docker 配置在子域上设置了 homeassistant:
docker 容器中的 Nginx 代理
docker run --name nginx-proxy \
-p 80:80 -p 443:443 -d --restart=always -v /etc/nginx/conf.d -v /etc/nginx/vhost.d -v /usr/share/nginx/html -v /etc/nginx/certs/:/etc/nginx/certs:ro --label com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy nginx
接下来,为配置生成器创建模板:
curl https://raw.githubusercontent.com/jwilder/nginx-proxy/master/nginx.tmpl > /etc/nginx/templates/nginx.tmpl
设置代理的 Nginx 代理配置生成器
docker run --name nginx-config-gen \
-d --restart=always --volumes-from nginx-proxy -v /etc/nginx/templates/:/etc/docker-gen/templates/:ro -v /var/run/docker.sock:/tmp/docker.sock:ro --label com.github.jrcs.letsencrypt_nginx_proxy_companion.docker_gen jwilder/docker-gen -notify-sighup nginx-proxy -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
处理您的 SSL 证书的 SSL 伴侣
docker run --name nginx-letsencrypt \
-d --restart=always --volumes-from nginx-proxy -v /etc/nginx/certs/:/etc/nginx/certs:rw -v /var/run/docker.sock:/var/run/docker.sock:ro jrcs/letsencrypt-nginx-proxy-companion
因此,当您运行此程序时,您将拥有一个自动配置新图像的 SSL 加载代理。接下来我们可以添加:
docker run --name domain.com \
-p 8888:80 -d --restart=always -v /etc/nginx/apps/www.domain:/etc/nginx/conf.d -e VIRTUAL_HOST=www.domain.com -e LETSENCRYPT_HOST=www.domain.com -e LETSENCRYPT_EMAIL=hosting@domain.com nginx
要为您的域启动网络服务器,请将其自动绑定到您的代理并为其获取 SSL 证书。只要域是唯一的,您就可以以相同的方式添加更多站点。使用 homeAssistant 的子域可以像 homeassistant.domain.com 这样的:
docker run -d -p 8080:8123 --name home-assistant --net=host --restart=always --device=/dev/ttyACM0 -v /opt/homeAssistant:/config -v /etc/localtime:/etc/localtime:ro -e VIRTUAL_HOST=homeassistant.domain.com -e LETSENCRYPT_HOST=homeassistant.domain.com -e LETSENCRYPT_EMAIL=hosting@domain.com homeassistant/home-assistant
在这种情况下,请确保在此示例中在您的 home-assistant 配置文件夹 (/opt/homeAssistant) 中创建一个空的 www 目录,以使 SSL 域测试能够由letsEncrypt 完成。