『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 6600|回复: 4

[基础教程] N1简单使用nginx的dockers通过https反向代理局域网其他ip

[复制链接]

4

主题

250

帖子

1293

积分

金牌会员

Rank: 6Rank: 6

积分
1293
金钱
1043
HASS币
0
发表于 2019-4-28 17:29:37 | 显示全部楼层 |阅读模式
本帖最后由 chengka3463 于 2019-4-28 17:38 编辑

作为分享记录,本人小白,没有编程语言能力,仅google和复制黏贴,稍微改动。希望同为小白的大家能少走点弯路吧
使用的基础情况先介绍下 在硬件斐讯N1的游戏系统sx05re中文版的固件下构建的,不过N1其他固件应该更好搞,通用的。 其他固件我也基本都玩过了
前置条件:
1、域名,这个自己想办法咯;
2、泛域名证书申请,看这一篇就够了
N大的帖子:无 80 端口申请 Letsencrypt 免费 SSL 证书

不过镜像换一下,附上我的支持N1的arm64
docker run -d  \
  --restart=always \
  -v "$(pwd)/out":/acme.sh  \
  -v /storage/docker/hassio/ssl:/ssl  \
  -e HE_Username="chbsh" \
  -e HE_Password="445656" \
  --net=host \
  --name=acme.sh \
  lfzbw/acme.sh daemon

我的是HE的域名解析,  -e HE_Username="chbsh" -e HE_Password="445656" 大家看着依照自己的解析改吧。docker  exec  acme.sh --issue --dns dns_he -d 你的泛域名
申请证书
然后 docker  exec  acme.sh  --install-cert  -d 你的泛域名 --cert-file /ssl/111.crt  --key-file /ssl/111.key
生成证书和密匙文件,名称随意。这样就会在我映射的/storage/docker/hassio/ssl文件夹下生成111.crt 和111.key 证书和密匙文件。

接下来就是创建nginx容器,代码如下:
docker run -d \
    --name nginx \
    --restart always \
    -p 443:443\
    -p 80:80 \
    -v /storage/docker/hassio/nginx:/etc/nginx/conf.d \
    -v /storage/docker/hassio/ssl:/etc/nginx/ssl \
    arm64v8/nginx


然后在/storage/docker/hassio/nginx 文件夹下新建default.conf文件,名字default随意改,示例而已 内容如下。

server {
        listen 443 ssl;
        server_name port.twub.ml;
        ssl_certificate /etc/nginx/ssl/111.crt;
        ssl_certificate_key /etc/nginx/ssl/111.key;
location / {
        proxy_redirect off;
        proxy_pass  http://192.168.1.122:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection "upgrade";
}
       client_max_body_size 512M;
}


说明下 port.twub.ml 是我这种的域名 , http://192.168.1.122:9000 是我的Portainer容器的IP和端口。
有多个内网IP要反代的就复制黏贴一套,然后修改server_name 你的泛域名;和 proxy_pass  你的内网IP:端口;
也可以新建多个*.conf文件 每个里复制一套。这样就基本成功了  。重启下nginx容器让设置生效。
将文件备份好,以后重装就只需要上传进相应文件夹就可以。

反代路由登陆的多了几行代码,我也贴一下,反正我不懂原理,192.168.1.1是我路由器的ip,大家看着改吧

server {
        listen 443 ssl;
        server_name err.rry.ml;
        ssl_certificate /etc/nginx/ssl/111.crt;
        ssl_certificate_key /etc/nginx/ssl/111.key;
location / {
          proxy_ssl_server_name on;
          proxy_pass         http://192.168.1.1;
          proxy_redirect     off;
          proxy_set_header   Host             $host;
          proxy_set_header   X-Real-IP        $remote_addr;
          proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
          proxy_set_header        X-Forwarded-Proto $scheme;
           proxy_cache_key "$scheme://$host$request_uri";
           proxy_set_header Referer http://192.168.1.1;
           proxy_set_header Host 192.168.1.1;
           proxy_set_header Accept-Encoding "";
           proxy_pass_header Set-Cookie;

        }
}


论坛教程我反正看了觉得太复杂,我这篇小白向,复制黏贴就成,改下关键几个地方。各容器的映射路径注意就行。我证书映射的是同一路径。好管理



回复

使用道具 举报

22

主题

519

帖子

1608

积分

金牌会员

Rank: 6Rank: 6

积分
1608
金钱
1089
HASS币
10
发表于 2019-4-29 08:39:36 | 显示全部楼层
这样 外网通过域名就能访问到N1了?
回复

使用道具 举报

4

主题

250

帖子

1293

积分

金牌会员

Rank: 6Rank: 6

积分
1293
金钱
1043
HASS币
0
 楼主| 发表于 2019-4-29 08:59:02 | 显示全部楼层
443端口被封的话,路由设置N1 IP地址的端口转发就行
回复

使用道具 举报

0

主题

25

帖子

713

积分

高级会员

Rank: 4

积分
713
金钱
688
HASS币
0
发表于 2019-4-29 09:50:23 | 显示全部楼层
楼主可以试试 caddy 哇,配置超简单,还能自动帮你申请 ssl 证书
回复

使用道具 举报

4

主题

250

帖子

1293

积分

金牌会员

Rank: 6Rank: 6

积分
1293
金钱
1043
HASS币
0
 楼主| 发表于 2019-4-29 12:40:51 | 显示全部楼层
本帖最后由 chengka3463 于 2019-4-29 12:44 编辑

caddy试过了,配置是一样的,N1没装hassio
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 22:53 , Processed in 0.072716 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表