先说一下网络环境:
- OpenWRT 10.1.1.1
- 小主机 10.1.1.2
- jellyfin 10.1.1.2:8096
- alist 10.1.1.2:5244
需求是我想用jf.me
代替jellyfin这一长串的地址10.1.1.2:8096
,用al.me
代替alist的这一长串10.1.12:5244
。
思路清晰,需要两步,以jellyfin为例。
首先让OpenWRT接管jf.me,这一步需要域名解析系统(DNS)来做,OpenWRT中是Dnsmasq提供的服务。把所有想配置的域名都交给10.1.1.1(因为这里是网络枢纽)来处理,配置如下图
DNS配置
然后,用Nginx把指向
10.1.1.1:80
且目的地址为jf.me
的请求转发给10.1.1.2:8096
。我的OpenWRT来自https://supes.top/,定制了Nginx,如果你没有Nginx,需要自己下载且代替OpenWRT默认的web服务器uhttpd。我下面说的配置针对我的系统,你自己安装的需要配置的文件位置可能不一样,但是内容一样。
查看/etc/nginx/uci.conf
的代码,http节点中有include conf.d/*.conf;
,所以我们在/etc/nginx/conf.d
文件夹中新建一个forward.conf
来配置所有的转发服务。/etc/nginx/conf.d/forward.conf
的代码如下,一个server代表一个服务,第一个server是jellyfin,第二个是alist,每一个转发服务其实只需要三个配置选项,具体看alist的配置。
server
{
listen 80;
server_name jf.me;
index index.php index.html index.htm default.php default.htm default.html;
location /
{
proxy_pass "http://10.1.1.2:8096";
proxy_set_header Host jf.me;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
server
{
listen 80;
server_name al.me;
location /
{
proxy_pass "http://10.1.1.2:5244";
}
}
配置完成之后执行命令nginx -t -c /etc/nginx/uci.conf
检查配置文件语法是否正确。如果无误输入/etc/init.d/nginx restart
重启Nginx服务。
al.me
即可!