本帖最后由 banzhanglaolin 于 2020-8-13 19:59 编辑
增强外网访问homeassistant的安全性,利用nginx内网还是可以用之前的方式访问,外网访问时更加安全。
我们的homeassistant是不需要改配置的。想从外网访问的前提是有一个公网ip,解决办法也有很多可以自行百度
一、前期准备(nginx的安装和ssl证书的申请)
nginx的安装
如果是利用树莓派的话可以用 apt-get install nginx 进行安装
阿里云证书
证书可以在阿里云免费申请,前提是域名在阿里云中,下载证书时类型选择Apache下载即可解压后我们只需要***.key和***public.crt文件放到ssl文件夹中把对应的配置改好就可以了
免费的证书网站
免费证书国内证书自签网站
自签证书
我们前安装openssl
apt-get install openssl
转到/etc/nginx/ssl ,因为我们要把证书文件放到这个文件夹中; 如果没有的话用mkdir命令生成一个文件夹
cd /etc/nginx/ssl
生成服务器私钥(密钥长度2048)可以根据自己需求更改
openssl genrsa -out MyRoot.key 2048
利用密钥生成证书
openssl req -x509 -new -nodes -key MyRoot.key -sha256 -days 3650 -subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=EMQ/OU=Broker/CN=访问域名" -out MyRoot.pem
二、对nginx进行设置
跳转到配置文件 cd /etc/nginx/sites-enabled/default 进入文件夹后将之前的文件夹备份 mv default default.lod
新建一个新的配置文件 nano default 将一下内容复制进去保存
server {
server_name _; #默认内外网都能通过443端口访问,把“_”替换成访问域名后只能通过域名访问
listen 443 ssl;
listen [::]:443 ssl;
charset utf-8;
ssl_certificate /etc/nginx/ssl/********; #自行替换证书文件
ssl_certificate_key /etc/nginx/ssl/******; #自行替换私钥文件
ssl_prefer_server_ciphers off;
underscores_in_headers on;
location / {
proxy_pass http://127.0.0.1:8123;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
重新加载nginx配置文件
nginx -s reload
如果server_name 进行设定后,需要通过域名进行访问测试,默认的话可以通过服务器内网ip进行访问前面需要加https://
附加
感觉每次输入https://很麻烦的话可以设置nginx强制跳转到443端口
server {
listen 80;
listen [::]:80;
server_name _; #默认内外网都能通过80端口访问,把“_”替换成访问域名后只能通过域名访问
return 301 https://$host$request_uri;
}
原文:HomeAssistant使用nginx转发HTTPS请求
目前已知问题:通过苹果手机内网访问代理地址无法登录到Homeassistant网页提示Unable to connect to Home Assistant,外网访问没有问题。(错误原因未知)安卓,电脑访问没有问题。
|