![如何将特定的 URL/ROUTE/PATH/LOCATION 重定向到另一个?](https://linux22.com/image/784977/%E5%A6%82%E4%BD%95%E5%B0%86%E7%89%B9%E5%AE%9A%E7%9A%84%20URL%2FROUTE%2FPATH%2FLOCATION%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%EF%BC%9F.png)
假设我的客户端(当前设备)想要连接到一个 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