openwrt内网端口转发,内部使用nginx反代,外部使用https安全访问的方案

需求背景

内网使用openwrt,一些服务想在外网使用。
自己有公网ip,不想使用frp等内网穿透,链路不好的时候比自己的公网ip慢太多了
此时,想要该服务走https的链路就比较绕了,折腾好了,特此记录一下,如有不对的地方,欢迎指教

前期准备

内网服务器 >= 1个(本文使用两个)
准备一个域名,使用openwrt中的ddns,解析一个泛域名,方便之后配转发(ddns一般是不能解析泛域名的,可以先ddns解析一个A记录,然后再将一个泛域名CNAME指向该动态解析的域名)
使用acme.sh来生成一个免费的证书,具体不在赘述,GitHub上有中文使用文档
准备一个需要公网访问的服务,本文中使用一个画流程图的工具做示例

实现过程

整体流程图

流程

操作过程

1.将网关机器的端口映射到公网

本文的nginx内网服务器ip为 10.0.0.7
https使用默认端口443

openwrt -> 防火墙 -> 端口转发
配置了两条转发
转发1:监听http请求 wan口端口10080(国内ISP封掉了80,直接+10000用10080),内部转发到nginx的服务器的80端口
转发2:监听https请求 wan口端口10443 (国内ISP也封了443,也直接+10000,使用10443),内部转发到nginx的服务器的443端口
在这里插入图片描述

2.启动一个内网应用

先要有一个应用,随便在内网服务器的docker里启一个

docker run -d --name=draw -p 8003:8080 --restart=always fjudith/draw.io

现在用的服务器的内网ip为10.0.0.4,8003端口为该服务
在这里插入图片描述
使用内网访问一下看看效果,并没有什么问题
在这里插入图片描述

3.nginx配置

1.配置nginx.conf主配置文件

在这里插入图片描述
ssl处配置acme.sh生成的证书的路径
ssl_ciphers处一般使用aes即可,由于我使用的cpu是j1900,无aes指令集,所以就没使用aes,换成了chacha20
最后两行配置是默认使用的include,所以就不要在这里配置了,去include的目录中配置

按照习惯,本文现将配置文件都写入到sites-available中,然后从sites-enabled挂软连接,开启哪个就挂哪个域名的软连接
在这里插入图片描述

2. 配置要映射的站点

1.进入sites-available目录,建一个配置文件,我自己的使用习惯是直接使用域名,编辑文件,配置一个server,监听80和443,反代内网的目标服务(10.0.0.4:8003)
在这里插入图片描述

2.进入sites-enabled目录,将该服务软连接过来

ln -s ../sites-available/diagrams.home.qyzhg.com

重启nginx

nginx -s reload

验证

由于没有使用标准https的端口443,输入域名的时候要输入完整的协议+域名+端口
在这里插入图片描述
大功告成

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
OpenWrt中设置端口转发可以通过Luci界面进行操作。以下是设置端口转发的步骤: 1. 打开Luci界面,点击"网络",然后选择"防火墙"。 2. 在防火墙页面中,点击"端口转发"选项卡。 3. 点击"新建端口转发"按钮,填写名称(随意命名),外网端口,内部IP地址和内网端口。例如,如果要将外网的82端口上的TCP数据转发到内网的192.168.1.11的80端口上,可以按照如下设置: - 名称:随意命名 - 外网端口:82 - 内部IP地址:192.168.1.11 - 内网端口:80 4. 点击"添加"按钮,然后点击"保存并应用"按钮,设置即可生效。 如果你想通过外网访问路由器,有两种方法: 第一种方法是直接开放80端口: 1. 在防火墙页面中,往下滚动,找到"通信规则"选项卡。 2. 点击"添加新规则"按钮,填写一个名称(随意命名),然后设置外部端口为80。 3. 点击"添加"按钮,然后点击"保存并应用"按钮,设置即可生效。 如果ISP封闭了80端口,你可以使用另一种方法: 1. 在防火墙页面中,点击"端口转发"选项卡。 2. 按照如下设置进行配置: - 内网IP地址:填写你的路由器IP - 外网端口:81(或其他未被封闭的端口) - 内网端口:80(或其他你想要转发的内网端口) 3. 点击"添加"按钮,然后点击"保存并应用"按钮,设置即可生效。 这样,你就可以通过外网IP加上端口号来访问你的路由器了,例如:外网IP:81。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值