python/perl/shell脚本中的条件代理服务器

python/perl/shell脚本中的条件代理服务器,python,perl,http,shell,proxy,Python,Perl,Http,Shell,Proxy,我有一个应用程序,它查询某个服务的主机名:端口,一个Web服务。在开发过程中,有些服务不可用或正在由第三方构建,因此,为了开发我们的应用程序,我考虑使用mockservices和soapUI作为某些服务的存根。 问题是我只能将我的应用程序指向一个方向一次,所以如果我指向mockservice,我需要确保mockservice正在模拟所有的服务(>50),这是太多的开销。因此,我考虑将我的应用程序指向一个代理服务器,该服务器将把一些请求重定向到mockservices,并保留到实际的服务提供者。

我有一个应用程序,它查询某个服务的主机名:端口,一个Web服务。在开发过程中,有些服务不可用或正在由第三方构建,因此,为了开发我们的应用程序,我考虑使用mockservices和soapUI作为某些服务的存根。


问题是我只能将我的应用程序指向一个方向一次,所以如果我指向mockservice,我需要确保mockservice正在模拟所有的服务(>50),这是太多的开销。因此,我考虑将我的应用程序指向一个代理服务器,该服务器将把一些请求重定向到mockservices,并保留到实际的服务提供者。我有没有办法通过一个简单的脚本来做到这一点

当然。使用Perl的草图:

#!perl
use strict;
use warnings;
use Plack::App::Proxy;

my $live_proxy = Plack::App::Proxy->new(
    remote => "http://live.soap.service.com:80/"
);

my $soapui_proxy = Plack::App::Proxy->new(
    remote => "http://localhost:4567/"
);

sub {
    my $env = shift;
    if ($env->{REQUEST_URI} =~ m[^/some/path]) {
        return $soapui_proxy->($env);
    } else {
        return $live_proxy->($env);
    }
};

plackup filename
的形式安装并运行它。它构造了两个代理应用程序,一个将所有请求转发到live service URL,另一个将所有请求转发到您的模拟服务URL。然后,包装器应用程序根据URL(或者根据其他内容,如果需要)选择将任何给定请求发送到哪个应用程序。

“我只能将我的应用程序指向一个方向一次”——这意味着什么?@shx2我已经在属性文件中配置了webService URL,如“xyzServiceProvider.uri=https://abc:8080”谢谢:)不幸的是,我刚刚发现我不允许安装Plack,将不得不寻找另一种方式。@Rnet任何常见的Web服务器(apache、nginx、lighttpd,可能还有许多其他)都可以配置来完成这项工作。谢谢,我正在设置nginx反向代理,接受您的评论作为ans:)