Homeassistant安装Nginx配置SSL使用HTTPS

Homeassistant安装Nginx配置SSL使用HTTPS

前提:已申请域名并可使用域名通过HTTP方式连接

一、设置FRP内网穿透

参考:Homeassistant利用FRP实现外网访问

这里为避免Nginx启动的端口号与Homeassistant的8123端口号冲突,需修改内网的端口号,这里设置为7123,frpc.ini这部分的配置如下:

[web8123]
type = tcp
# 内网客户端IP
local_ip = 192.168.x.x
# 内网客户端端口号
local_port = 7123
# 远端服务器端口号,可自行修改,访问时使用该端口号
remote_port = 8123

二、安装Nginx

1、下载安装Nginx

参考:Nginx安装

注意一点,这里需要切换的root用户再安装,否则会因权限不够无法创建目录,导致安装失败。

切换root用户方法如下:

# 修改root用户密码
pi@raspberrypi:~ $ sudo passwd root
新的 密码:
重新输入新的 密码:
passwd:已成功更新密码

# 切换至root用户
pi@raspberrypi:~ $ su - root
密码:
root@raspberrypi:~#

# 退出root用户
root@raspberrypi:~# exit
pi@raspberrypi:~ $

2、配置Nginx开机自启动

以下使用root账号设置

首先创建nginx.service文件

nano /etc/systemd/system/nginx.service 

然后配置如下内容保存

[Unit]  
Description=nginx  
After=network.target  

[Service]  
Type=forking  
ExecStart=/usr/local/nginx/sbin/nginx 
ExecReload=/usr/local/nginx/sbin/nginx -s reload  
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true  

[Install]  
WantedBy=multi-user.target

设置开机自启

systemctl enable nginx.service 

三、申请SSL证书

这里我们使用阿里云申请免费的SSL证书,网址:云盾证书服务

选择如下,下订单购买即可,费用是0元。

购买完成后在SSL证书页面中申请并根据提示完成签发。

四、安装证书

参考阿里云帮助:在Nginx服务器上安装证书

1、执行以下命令,在Nginx安装目录(默认为/usr/local/nginx/conf)下创建一个用于存放证书的目录(命名为cert)。

cd /usr/local/nginx/conf  #进入Nginx默认安装目录。如果您修改过默认安装目录,请根据实际配置进行调整。
mkdir cert  #创建证书目录,命名为cert。

2、使用远程登录工具(例如,PuTTY、Xshell)附带的本地文件上传功能,将本地证书文件和密钥文件上传到Nginx服务器的证书目录(示例中为/usr/local/nginx/conf/cert)。

3、创建DHPARAMS文件

说明:此文件需要一段时间才能生成,在等待的过程中可以再开一个连接窗口继续下一步

cd /usr/local/nginx/conf/cert
sudo openssl dhparam -out dhparams.pem 2048

3、编辑Nginx配置文件(nginx.conf),修改与证书相关的配置内容。

使用示例命令前,请注意:nginx.conf默认保存在/usr/local/nginx/conf目录下。如果您修改过nginx.conf的位置,请将/usr/local/nginx/conf/nginx.conf替换成修改后的位置。

vim /usr/local/nginx/conf/nginx.conf

修改内容如下:

其中listenserver_namessl_certificatessl_certificate_keyssl_dhparam需根据实际情况进行修改,listen端口号与frpc.ini设置的local_port相同

server {
    listen       7123 ssl;
    server_name  xxxxxxxxx.com;
    ssl_certificate cert/xxxxxxxxx.pem; 
    ssl_certificate_key  cert/xxxxxxxxx.key;
    ssl_dhparam cert/dhparams.pem;
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;

    proxy_buffering off;

    location / {
        proxy_pass http://localhost:8123;
        proxy_set_header Host $host;
        #proxy_redirect http:// https://;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

五、启动Nginx

使用如下命令验证配置是否有误

/usr/local/nginx/sbin/nginx  -t  

启动Nginx

nginx

查看是否启动

[root@f-numen ~]# ps -ef | grep nginx
root     28243     1  0 22:02 ?        00:00:00 nginx: master process ngin
nobody   28246 28243  0 22:02 ?        00:00:00 nginx: worker process
root     28257 28201  0 22:09 pts/0    00:00:00 grep --color=auto nginx

六、设置访问安全

修改configuration.yaml文件,内网IP地址根据实际情况自行修改

homeassistant:
  auth_providers:
    - type: trusted_networks
      trusted_networks:
       - 192.168.3.0/24
       - 127.0.0.1
       - ::1
      allow_bypass_login: true
    - type: homeassistant

七、测试验证

使用HTTPS方式访问域名+端口,可成功访问Homeassistant。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xumeng32@126.com

文章标题:Homeassistant安装Nginx配置SSL使用HTTPS

文章字数:986

本文作者:F_numen

发布时间:2021-04-03, 11:45:10

最后更新:2021-04-03, 17:35:51

原始链接:https://netheroone.cn/archives/66cc4884.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
/*baidu统计*/