当前位置:   article > 正文

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

openwrt反向代理

需求背景

内网使用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
  • 1

现在用的服务器的内网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
  • 1

重启nginx

nginx -s reload
  • 1

验证

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/224645
推荐阅读
相关标签
  

闽ICP备14008679号