将特定的传出URL重新路由到另一个URL - linux ubuntu 16.04

时间:2018-01-01 16:53:37

标签: linux url networking routing

我正在构建一个非常旧的程序,它有许多过时的依赖链接。

这些链接可能位于从网上下载的其他依赖项中,这些依赖项取消了更改网址的选项

我能够通过其他链接找到所有这些依赖关系,但更改路径已成为一项无休止的任务。

是否可以为一对一映射的传出URL创建规则列表。 例如:

http://Oldserver.com/this/is/one/OldDependency.jar - > http://Newserver.com/this/is/one/with/other/url/NewDependency.jar

使用什么工具进行路由,iptables或其他什么并不重要。我愿意为此做好准备。

这需要在OS级别上进行,因为路径在tar文件中

1 个答案:

答案 0 :(得分:0)

我能够通过使用本地nginx来实现这一点。 这里最好的解决方案是一个dockerized nginx容器。

我将使用上面的例子

http://Oldserver.com/this/is/one/OldDependency.jar - > http://Newserver.com/this/is/one/with/other/url/NewDependency.jar

步骤:

  1. 编辑主机文件以将主机路由到本地主机

    $ sudo vim / etc / hosts

  2. 将此行添加到您的主机文件

    127.0.0.1 Oldserver.com
    
    1. 将docker引入nginx docker容器

      docker pull nginx

    2. 将此nginx配置文件保存到某个路径(代码标签不起作用,抱歉)

      活动{   worker_connections 4096; ##默认值:1024 }

      http {   服务器{     听80;     server_name Oldserver.com;

      location = /this/is/one/OldDependency.jar {
        proxy_pass http://Newserver.com/this/is/one/with/other/url/NewDependency.jar;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
      }
      
      location / {
        proxy_pass http://Oldserver.com;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
      }
      

      } }

    3. 如果您有更多路径,请在通配符location /上方添加。 location /使用保留路径

      转发与原始服务器不匹配的所有路径
      1. 设置配置权限
      2. chmod 600 /some/path/to/nginx.conf

        1. 使用配置文件
        2. 启动nginx docker容器

          docker run --name proxy -v /some/path/to/nginx.conf:/etc/nginx/nginx.conf:ro -p 80:80 -d nginx

          现在,对Oldserver.com的每个请求都将通过您的nginx代理并重新路由,如果它与您的任何位置配置匹配