在没有固定公网IP的情况下,需要使用域名绑定IP,IP每变更一次,域名解析就要手动调整一次,远程的情况下基本无解。 本项目基于腾讯DNSPOD的api,通过定时任务(每分钟)检查子域名绑定的IP是否与当前公网IP不一致,如果不一致则更新子域名。
server.port=7101
#dns服务商,默认DNSPOD
dns.provider=DNSPOD
#dnspod api密钥,格式为"ID,Token"
dns.token=
#域名xxx.com
dns.domain=
#子域名名称,如www、kevin、app
dns.sub_domain=
java -jar fish-dnspod.jar application.properties
//返回success表示服务已正常启动
http://127.0.0.1:7101/healthCheck
//返回定时任务执行情况{"exec_result":"success","last_exec_time":"2022.01.26 11:32:03"}
http://127.0.0.1:7101/stats
借用第三方工具https://github.com/winsw/winsw,可将应用注册成服务.
注意:由于winsw支持的操作系统版本有限,需要先确认当前操作系统是否满足winsw的支持范围。
亲测:windows 10可行,windows server 2008 R2 SP1不行
并更名为fish-dnspod.exe,放置于fish-dnspod.jar同目录
<service>
<id>fish-dnspod</id>
<name>fish-dnspod</name>
<description>dynamic update dns ip</description>
<env name="DNSPOD_HOME" value="%BASE%"/>
<executable>java</executable>
<arguments>-jar "%BASE%\fish-dnspod.jar" "%BASE%\application.properties"</arguments>
<log mode="roll"></log>
<logpath>%BASE%\win-logs\</logpath>
</service>
fish-dnspod install
fish-dnspod start
由于javaw不支持外部配置文件,所以需要先在源码中的配置文件application.properties中修改好对应的配置再打包
可在执行脚本中指定参数
@echo off
copy "%JAVA_HOME%\bin\javaw.exe" "%JAVA_HOME%\bin\fish-dnspod.exe"
start fish-dnspod -jar D:\fish-dnspod\fish-dnspod.jar --server.port=7101