记一次基于OpenWRT+Nginx反代的局域网服务小改造

856 字
4 分钟
记一次基于OpenWRT+Nginx反代的局域网服务小改造

前言#

随着服务器上面跑的东西越来越多,docker跑的服务也越来越多了

我常访问所以我可以记住每个虚拟机的ip或者docker的端口

但是每次在浏览器输入都得输入192然后手动补全,有时候甚至得冒号加端口号才可以

太特么麻烦了

开始#

其实指定域名去指定某个IP很简单,一个DNS服务器就解决了

比较麻烦一点的是端口号,因为正常的DNS服务只负责解析域名到ip

指定端口的话就需要用Nginx反代了

再加上后面我想给一些服务加上单点登录和通行密钥,反代这关肯定是过不去了

DNS服务器的搭建#

其实这个很简单,我OpenWRT里面iStore装一个SmartDNS,上游服务器设置为网关或者某个国内的DNS,然后域名地址按照

address /domain.suffix/ip

比如

address /openwrt.lan/192.168.0.114

填写

然后设备需要自定义一下DNS服务器为OpenWRT(如果你WRT本身就是主路由那不需要这步)

值得一提的是如果直接在Chrome里输入.lan结尾的域名他会搜索,因为他不认为.lan是有效域名

但是后面加个/就可以了

Nginx反代#

这个其实是稍微麻烦点的点

我们可以把Nginx跑在OpenWRT上,但那样会遇到一个问题

就是与WRT原本的web服务uHTTPd冲突

导致你没有办法再访问luci管理界面

即使你可以访问 uHTTPd http到https的重定向也会不可用

我们可以关闭uHTTPd,直接让Nginx接管WRT的web管理界面

但那样太麻烦了 我懒我也不会

而且Nginx默认不支持luci

况且Nginx的话https证书自签还要自己解决

那还说啥,咱们局域网另外一台设备跑Nginx好了

Nginx配置#

我整了台最小化安装的ubuntu server

我不咋会用别的Linux发行版

然后装了Nginx之后配置一下就好了

server {
listen 80;
# listen 443 ssl;
server_name backrest.lan; # 你用来访问的域名
# 如果你有SSL证书,可以在此处配置证书路径,实现HTTPS访问
# ssl_certificate /path/to/your/cert.crt;
# ssl_certificate_key /path/to/your/private.key;
location / {
# 实际代理的地址
proxy_pass https://192.168.0.90:9898;
proxy_set_header Host $host;
# 传递客户端的真实IP地址
proxy_set_header X-Real-IP $remote_addr;
# 包含经过所有代理的客户端IP列表
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

配置之后,我们去之前SmartDNS的配置那里将用来访问的域名的ip改为Nginx反代的ip

address /backrest.lan/192.168.0.233

192.168.0.233即为Nginx反代服务器的地址

完事了

后面我为了方便管理,我迁移到了1Panel

我1Panel的配置文件如下

server {
listen 80 ;
server_name backrest.lan;
index index.php index.html index.htm default.php default.htm default.html;
access_log /www/sites/backrest.lan/log/access.log main;
error_log /www/sites/backrest.lan/log/error.log;
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
return 404;
}
location ^~ /.well-known {
allow all;
root /usr/share/nginx/html;
}
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
root /www/sites/backrest.lan/index;
include /www/sites/backrest.lan/proxy/*.conf;
}

后记#

其实的话完全可以让Nginx反代所有的服务,在DNS那里可以将所有*.lan结尾的域名全部指向反代服务器

然后去给服务器设置白名单 比如只接受反代服务器的连接请求

但那个也不是完全有必要,我们后面有需要的话再改

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

记一次基于OpenWRT+Nginx反代的局域网服务小改造
https://cainongw.github.io/posts/network-enhancing/
作者
Cainong
发布于
2025-10-04
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
记一次基于small-step对局域网内证书的自签名
HomeLab 我们已经解决了K8s内集群的证书 现在需要解决我们直接跑在虚拟机上的一些服务的证书签名了 之前是自己签名 现在发现可以用根证书+ACME统一签名 因为是根证书 实际上可以在Ingress里设置任何一个域名(即使他已经存在) 甚至可以把baidu换成google(
2
记一次断电重启后ESXi的恢复
HomeLab 该说不说实不相瞒服务器我早就修好了,因为懒才拖到现在发 blog应该一边折腾一边写才对,不然弄完了就懒得发了 我不知道因为这个咕咕多少篇blog了 写在前面 woc 要不是阿里云发短信给我我都忘了我还有这么个blog在这 一看我已经两年没发东西了,我当初刚好续了两年的域名 合着我的钱就这么打水漂了 屎啊
3
开源WAF 雷池在K8s上的搭建
HomeLab 前言 换了条宽带,现在我拥有动态的公网IPV4地址了 我打算暴露一些服务出去以便我使用 例如Openlist RDP Gitlab 但是 我并不打算公开 我只打算自己使用 前面我们搭建了Authentik作为SSO单点登录,刚好雷池WAF支持通过单点登录鉴权来允许访问 这样我就可以实现把ESXi挂到公网 但是不登录都过不了防火墙
4
记一次Kubernetes集群的完善
HomeLab 前言 我们成功搭建起了K8s 接下来我们需要搭建一些额外的服务来满足我的需求
5
记一次Kubernetes完整集群的搭建
HomeLab 写在前面 太好了孩子们 这次基本全都是命令行操作 我不用截图了 以下几乎全是命令 几乎一张图片没有 如果你想做为参考的话请仔细阅读每一行 前言 昨天我在折腾Authentik认证服务的时候 一直在思考用什么反代服务 常见的可以用Nginx Proxy Manager,Caddy,Traefik 这里面我觉得比较好用的是Traefik,但是即使是Traefik
随机文章 随机推荐
Profile Image of the Author
Cainong
Caiw there 👋
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
站点统计
文章
38
分类
16
标签
48
总字数
57,650
运行时长
0
最后活动
0 天前

文章目录