首页 >PC >正文

再也不用记IP了,0成本(极低成本)搞定域名"动态解析"

#大男孩的快乐#征稿活动火热进行中。只要投稿就有50金币等你拿,更有三千元乐高大奖与达人Z计划专属权益等待优秀的你~>活动详情戳这里<创作立场声明:本文纯属个人观点,不存在安利元素。

我要解决什么问题

卤煮最近撸了一台nas,部署了一个jellyfin,也问电信要了公网IP,每次想看个电影吧,XXX.XXX.XXX.XXX:8096。电信耙耙的IP差不多2个礼拜变一次,变了之后又要输入AAA.AAA.AAA.AAA:8096。

再也不用记IP了,0成本(极低成本)搞定域名"动态解析"

能不能输入我自己的域名,直接跳转到我的jellyfin呢?不花钱的那种

再也不用记IP了,0成本(极低成本)搞定域名"动态解析"

,一分都不花的那种。


环境&工具

卤煮的nas环境是:

Description: Debian GNU/Linux 10 (buster)


Release: 10


Codename: buster

工具:

花生壳(实名认证过,可以http内网穿透)

nginx


实现原理

再也不用记IP了,0成本(极低成本)搞定域名"动态解析"

图糙理不糙

我们在浏览器输入bcd.abc.com(花生壳二级域名),这个域名映射了nginx服务器,nginx服务器再返回302临时(一开始我用的是301,301会被浏览器缓存我改成302了,图片就懒的改了)重定向到我们的公网IP,此时浏览器上的URL变成了我们的公网IP,实现"动态解析"。

相信大家已经看出来了,接下来的事已经和花生壳,nginx没有半毛钱关系了,我们只是嫖花生壳一个免费域名。


具体实现

1. 花生壳


首先你需要有一个花生壳账号(ngrok,frp也是可以的)并且能使用http映射的。

花生壳http映射需要实名认证可能需要花6块钱(卤煮趁他搞活动撸的0元

再也不用记IP了,0成本(极低成本)搞定域名"动态解析"

,所以标题是0成本或者极低成本)。体验版的花生壳流量1G/月,宽带1M,2个映射(还有一个映射22端口)指望他来看电影几乎是不可能的。(提一句,注册开发者搞一个测试应用,送铂金版账号3个月,我只能说这么多了)

将花生壳域名映射到8080端口,以后我们的jellyfin只需要输入这个域名就能访问啦。

再也不用记IP了,0成本(极低成本)搞定域名"动态解析"

映射8080端口

2.Nginx

这里考虑到其他NAS我这里以docker版的nginx为例。

前往dockerhub拉去官方镜像,由于众所周知的原因,我建议您先搞个加速器,不然你可能需要一个晚上(毕竟我们不是罗志祥晚上还是要睡觉的

再也不用记IP了,0成本(极低成本)搞定域名"动态解析"

再也不用记IP了,0成本(极低成本)搞定域名"动态解析"

命令 docker pull nginx

拉去完镜像之后,找个文件夹新建一个nginx配置,名字为web.conf,内容如下:

server {


listen 8080;


location / {


real_ip_header X-Forwarded-For;


set $out "http://你的公网ip:8096";


rewrite ^(.*)$ $out$request_uri redirect;


}


}

这个配置的意思是监听8080端口(必须和花生壳的映射端口一致),不管三七二十一301跳转到我们的公网IP去。

启动容器我们的nginx

卤煮还是喜欢使用docker-compose,文件如下:

web:


image: nginx


volumes:


- ./刚刚的web.conf:/etc/nginx/conf.d/web.conf


- 你的log文件夹:/var/log/nginx/


ports:


- "8080:8080"

如果你只需要docker命令,那么:

docker run --name 你的容器名字 -v 刚刚的web.conf:/etc/nginx/conf.d/web.conf -v 你的log文件夹:/var/log/nginx/ -p 8080:8080 -d nginx

说明下:/etc/nginx/conf.d/是nginx的配置目录,/var/log/nginx/是nginx的日志目录

做完这一步,小伙伴们你们可以测试一下是否成功,离完美还剩1%,接下来就是我们写脚本定时更新我的的公网IP了。

3. 更新公网IP的脚本

原理就是把nginx配置也就是上面的web.conf中的第6行的IP更新,保证它的正确性。

#!/bin/bash


#实时获取公网ip


PUBLIC_IP=`curl icanhazip.com`


IP_FILE='/tmp/ip.txt'


touch $IP_FILE


SYS_PUBLIC_IP=`cat $IP_FILE`


echo "系统公网IP:$SYS_PUBLIC_IP,本次获取的IP:$PUBLIC_IP"


#读取公网ip


if [ "$SYS_PUBLIC_IP" != "$PUBLIC_IP" ] ; then


echo $PUBLIC_IP > $IP_FILE


#这里6c表示第6行替换为XXXX


sed -i '6cset $out "http://'$G_PUBLIC_IP':8096"; ' 你的web.conf


#重启nginx容器


docker restart 你的nginx容器id


fi

把以上脚本加入到开机启动,设置成每1天跑一次就OK啦。


总结

完美的方案还是用dns去解决域名和IP直接的事情,不过这也算是一种方法啦(还是白嫖爽啦

再也不用记IP了,0成本(极低成本)搞定域名"动态解析"

)。

卤煮本来还想通过nginx判断客户机真实IP完成一个域名搞定内外网。(外网跳转到外网IP,内跳转到内网IP),无奈花生壳没法获取到真实IP,如果大佬们有方案记得通知卤煮。(不要跟我说修改路由器host之类的,卤煮的路由器是老款菊花牌,不支持这些花里胡哨的功能)

新人投稿,码字不易,请点个赞


网友评论

验证码 换一张
取 消
暂无评论...
三日内热门评论文章
为您推荐
  • 相关阅读
  • 业界资讯
  • 手机通讯
  • 电脑办公
  • 新奇数码
  • 软件游戏
  • 科学探索