如何将特定的 URL/ROUTE/PATH/LOCATION 重定向到另一个?

如何将特定的 URL/ROUTE/PATH/LOCATION 重定向到另一个?

假设我的客户端(当前设备)想要连接到一个 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

相关内容