树莓派使用nginx(非docker)配置ssl + 利用nginx转发ipv6访问ipv4HA

小白想分享一下ipv6如何配置SSL心得、nginx转发ipv6toipv4和如何外网ipv4访问家里ipv6设备;
新手发帖,如有重复,请联系(主要是想借论坛大神平台接入小爱同学)

一、背景

  • 偶然发现家里的移动宽带接入了ipv6且能使用公网(光猫桥接)
  • 所以就开始琢磨如何添加SSL配置。
  • 使用土豆兄的Nginx Proxy Manager配置了很久还是无法正常使用(可能是因为ipv6的问题),于是就开展最基本的学习nginx之路。

二、配置

安装就不说了,就几个命令
树莓派安装nginx

/etc/nginx下的nginx.conf是nginx的主配置文件;
由于配置文件的重要性,推荐大家不要动他。推荐更改sites-available目录下的文件;
打开/etc/nginx/sites-available/开始配置default
为什么不是sites-enabled,因为该目录下有个链接是链接于/etc/nginx/sites-available/default

  • 下面贴/etc/nginx/sites-available/default配置(直接在最后添加)

    server {
    listen [::]:443 ssl http2;
    server_name www.abc.com;
    #需要将域名解析于自家ipv6公网,如果是阿里云可以使用aliddns.sh动态解析
    root html;
    index index.html index.htm;
    #这里的.pem/.key文件替换成自己对应的文件名
    ssl_certificate cert/www.abc.com.pem;
    ssl_certificate_key cert/www.abc.com.key;
    #ssl文件储存于/etc/nginx/cert,先新建cert目录并赋权限
    ssl_session_timeout 5m;
    ssl_ciphers
    ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
    #代理的目标地址
    proxy_pass http://127.0.0.1:8123;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection “Upgrade”;
    proxy_set_header X-real-ip $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    }
    注意缩进格式1
    (第一次发帖不怎么会发代码缩进格式,见谅 :sweat_smile:)

然后 sudo nginx -t 验证和sudo nginx -s reload重启nginx

这样就不用将Hassio改为ipv6访问导致nodered的一系列问题发生。

三、后续问题

  • 单位使用ipv4网络,对于ipv6的服务器只有手机蜂窝数据才能访问。
    问题来了如何在单位可以登陆家里ha或者nodered服务呢
    • 答案:可以使用cdn对网站进行加速

因为网站处于无备案状态,国内cdn都不支持,所以把目光投去了cloudflare
如果加速网络不好,可以使用国内CF partner,运用CNAME解析,使用自定义节点进行手动选择最快节点加速对HA/NR访问,具体方法后续更新。
欢迎大家在帖子下交流心得,看看有没有更好的ipv4访问ipv6方法 :grin:

你在配置过程中,有没有碰到闪退的情况。我在本地使用node-red正常,今天把它配置到nginx反代中。访问连接看似没有问题,但实际上会立即断开连接。浏览器上显示“丢失与服务器的连接”。然后它就不断的尝试连接,又不断的断开。这个node-red在配置nginx还有什么特殊的地方吗?

配置选择 开启 Websockets Support 即可

万分感谢,完美解决 :+1: