我正在尝试在我的家庭网络上托管一个网页,只是想确保我在正确的轨道上。
我的 ISP,没有静态 IP,它们阻止了 80 端口的入站,所以特别困难
我当前的设置使用 no-ip 为我的网络创建一个静态地址,即abc.ddns.net
指向a.b.c.d
我有一个托管的网络服务器和端口转发到http://abc.ddns.net:100
并且可以从外部访问它,但是我不喜欢记住端口并且发现它进入笨重。
所以我一直试图找到解决这个问题的方法,我目前的想法是有一个site.ddns.net
路由到的子域,http://abc.ddns.net:100
但这会在物理上改变我想避免的地址栏 No-Ip 提供了一个域屏蔽功能,它将在保持重定向的同时保持地址栏中的域名,但是这不会更新,因此两者abc.ddns.net:100/
都abc.ddns.net:100/page1
显示为site.ddns.net
. 这不是最糟糕的解决方案,但并不理想
我还对运行 Nginx 的代理服务器进行了一些试验,这里的问题是端口80
仍然被阻塞,所以流量需要通过端口路由81
,也因为我没有静态 ip,所有流量都解析到a.b.c.d:81
最终处理来自不同的流量子域作为相同的请求
无论如何,我的设置变得复杂了。简而言之,我希望将域名abc.ddns.net
映射到my.public.ip.address:port
其他子域site.ddns.net
映射到my.public.ip.address:port2
,同时在非静态 ip 和端口80
+443
上被阻止,同时不让浏览器将地址恢复为实际端口
编辑:我已经在我的网络之外设置了一个代理服务器,但我仍然无法为@user1686 澄清我说的原因
也因为我没有静态 IP,所有流量都解析为 abcd:81 最终将来自不同子域的流量视为相同的请求
是因为在 nginx 上设置阻塞时看起来像这样
server {
listen 80;
server_name site.ddns.net;
location / {
proxy_pass http://abc.ddns.net:100;
proxy_set_header site.ddns.net;
}
}
流量不会转发,site.ddns.net
而是将您发送到默认的 nginx 页面
但是,如果我添加
server {
listen 80;
server_name upload-server.ddns.net;
location / {
proxy_pass http://llibyddap.ddns.net:100;
proxy_set_header upload-server.ddns.net;
}
}
server {
listen 80;
server_name a.b.c.d
location / {
proxy_pass http://abc.ddns.net:100;
}
}
它正确路由流量,我将其解释为 no-ip 在发送请求之前物理更改site.ddns.net
为a.b.c.d
导致它错过服务器块。虽然我不完全确定并且可能不正确。
此问题意味着代理服务器会将所有子域路由到同一点。
编辑2:让更改传播并清除我的浏览器缓存后,外部代理服务器完全按照我的意愿工作。感谢大家的帮助