假设我的客户端(当前设备)想要连接到一个 URL,比如说foo.bar.com/spam/eggs/123
,我该如何提供服务或重定向到另一个指定的 URL,比如说127.0.0.1:8080
,并阻止客户端访问foo.bar.com/spam/eggs/123
?
我可以使用什么软件?
答案1
如果我理解您的设置,您有一个外部域名 example.com,由第三方控制,上面有一个网站,由其他人控制。您希望允许一般访问该网站,但阻止某些 URL。
对此有几种解决方案;它们都归结为某种代理服务器。您可以通过此代理服务器代理网络流量,并在其中配置阻止/重定向列表,以处理预定义的异常。
一个免费的解决方案是 squid 缓存代理,它有重定向器支持(这里是文档中的详细信息 -https://wiki.squid-cache.org/Features/Redirectors)。不过请注意,正确设置和维护它并非易事。没有不尊重的意思,但基于你不得不问这个问题的事实,我怀疑你可能很难成功做到这一点。
答案2
您应该使用反向代理,例如Nginx
首先安装 sudo,apt-get install nginx
然后转到配置文件/etc/nginx/sites-available/foo.bar.conf
并将其放入其中:
server {
listen 80;
server_name foo.bar.com;
location /spam/eggs/123 {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
然后启用它ln -s /etc/nginx/sites-available/foo.bar.conf /etc/nginx/sites-enabled/
通过此配置,当客户端尝试连接 foo.bar.com/spam/eggs/123 时,Nginx 会将请求重定向到http://127.0.0.1:8080
然后重新加载Nginxsudo systemctl reload nginx