Apache 什么';这是一种简单的服务方式http://localhost 作为https://someOtherDomain?

Apache 什么';这是一种简单的服务方式http://localhost 作为https://someOtherDomain?,apache,ssl,proxy,webserver,Apache,Ssl,Proxy,Webserver,我运行一个本地开发web服务器来测试代码更改 通常,我必须使用只能安全连接到另一个域的远程服务来测试本地更改 e、 g.https://external1.com将只与https://someOtherDomain.com,但我必须测试新代码更改与https://external1.com 虽然我已经配置了一个可以工作的设置,但它看起来很复杂,并且需要一些时间才能正确设置。在我看来,许多开发人员都想做同样的事情,所以我的问题是: 是否有一种简单的方法将我的本地Web服务器代理为? 编辑:所以也许

我运行一个本地开发web服务器来测试代码更改

通常,我必须使用只能安全连接到另一个域的远程服务来测试本地更改

e、 g.
https://external1.com
将只与
https://someOtherDomain.com
,但我必须测试新代码更改与
https://external1.com

虽然我已经配置了一个可以工作的设置,但它看起来很复杂,并且需要一些时间才能正确设置。在我看来,许多开发人员都想做同样的事情,所以我的问题是:

是否有一种简单的方法将我的本地Web服务器代理为?

编辑:所以也许应该这样问-是否存在一个命令行或GUI工具,您可以传递本地端口和域名,并通过它安全地服务于您的本地端口-不需要配置或SSL证书创建?当然,如果需要的话,可以通过配置来替换SSL证书,这会很好,但是默认情况下,它会自动工作,使用预先准备好的SSL证书。即使我使用的是Apache,我也在寻找一个实际上不使用Apache的解决方案——它使用其他东西。为什么?因为我希望这个解决方案能够与我们团队中的其他人使用的任何Web服务器很好地协同工作——因为我们都运行不同的堆栈,我希望能够让我们中的任何人安全地服务于我们的站点,而不必单独配置每个Web服务器。 以下是我当前的设置,用于获取本地Web服务器并在
https://www.someOtherDomain.com

为了在本地测试这一点,我:

  • 编辑我的主机文件,并添加一个条目,使www.someOtherDomain.com指向我的本地计算机,当然这台计算机正在运行我的开发服务器。这使得我的本地站点现在可以在
    http://www.someOtherDomain.com

    127.0.0.1 www.someOtherDomain.com

  • 使用SSL证书设置和mod_代理运行Apache,将所有https请求重定向到本地http服务器,从而使我的站点在
    https://www.someOtherDomain.com
    。以下是我的Apache配置:

    ServerName www.someOtherDomain.com
    
    <Location /balancer-manager>
       SetHandler balancer-manager
    </Location>
    
    ProxyPass /balancer-manager !
    ProxyPass / balancer://mycluster/ 
    
    <Proxy balancer://mycluster>
      BalancerMember http://localhost route=1
    </Proxy>
    ProxyPass / balancer://mycluster
    ProxyPassReverse / balancer://mycluster
    
    SSLHonorCipherOrder On
    SSLProtocol -ALL +SSLv3 +TLSv1
    SSLCipherSuite RC4-SHA:HIGH:!ADH
    
    # Rewrite all http requests to https
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    
    ServerName www.someOtherDomain.com
    SetHandler平衡器管理器
    ProxyPass/平衡器管理器!
    ProxyPass/balancer://mycluster/ 
    平衡员http://localhost 路线=1
    ProxyPass/balancer://mycluster
    ProxyPassReverse/balancer://mycluster
    SSLHonorCipherOrder开启
    SSLProtocol-全部+SSLv3+TLSv1
    SSLCI RC4-SHA:高:!ADH
    #将所有http请求重写为https
    重新启动发动机
    重写条件%{HTTPS}关闭
    重写规则(*)https://%{HTTP\u HOST}%{REQUEST\u URI}
    
我在mac上运行这个,但我对linux的解决方案也感兴趣。我见过中间人代理中的各种人,听起来好像他们会使用一些配置…但我正在寻找一种安装和运行起来非常简单的东西——不仅仅是对我来说,我还可以告诉团队成员一些东西,因为我们将来可能都会经常这样做

重要提示:我的本地Web服务器没有在端口80上运行,不过为了保持简单,我在上面的示例中是这样说的。我知道mac上的端口80有点特殊,但我很高兴能在除端口80以外的所有端口上都能正常工作。

我认为至少在linux和os-x上可以做到这一点。我自己也没有试过,但似乎能证明它是如何做到的。尽管如此,它仍然不是一个微不足道的程序

但是,我还使用了其他方法:

第一个是最简单的一个,为develop.mydomain.com创建一个DNS条目,指向127.0.0.1,并为控制DNS的(子)域创建一个证书。将该证书分发给所有开发人员。他们仍然需要自己设置SSL,但不再需要生成证书。它还有一个附加的好处,每个人都在开发它,这允许他们共享配置。 要获得额外积分,请为*.develope.mydomain.com创建DNS条目和通配符证书,您的开发人员可以在本地计算机上拥有不同的站点(例如和)。(与internet有时告诉您的相反,只要证书对所有命名主机有效,基于名称的虚拟主机就可以与SSL配合使用)。由于域对于每个人都是相同的,所以您可以考虑获得有效的通配符证书来消除警告。 与下面的解决方案不同,这种方法甚至可以在办公网络之外工作,这可能与人们在家或在客户处工作有关

在此基础上,您还可以为开发人员机器的内部IP创建DNS条目(如果这些是固定的)。这确实增加了一些工作,但这意味着本地网络中的其他人可以访问开发人员正在进行的工作,这对于演示、移动设备上的测试等非常方便

另一种选择是将一台机器配置为代理所有开发人员。在类似*.develope.mydomain.com的文件上创建一个指向此框的内部IP的DNS条目,这是一个匹配的通配符证书,并使用正确的证书配置该框一次。现在,您可以为每个代理服务器创建一个虚拟主机,而且所有站点都可以通过本地网络访问,但这确实需要开发人员具有固定的ip地址(或通过DHCP添加到DNS的主机名)。
结合apache在其配置中包含目录中所有文件的能力,创建基于模板添加新站点的脚本变得非常简单。它所要做的就是根据请求的子域加上目标写入一个新文件,然后重新加载apache配置。这意味着像一个简单的PHP脚本这样的东西可以做你想让应用程序做的事情。

如果你想将你在本地机器上的web公开给internet,试试看,它很容易设置并且“正常工作”(根据经验)

另一个圣坛