Apache 重写到其他服务器

Apache 重写到其他服务器,apache,mod-rewrite,iis,url-rewriting,Apache,Mod Rewrite,Iis,Url Rewriting,我的应用程序托管在tomcat的8050端口下我的域名:8050。现在,我想要一个友好的url,比如说mydomain.com,用于访问mydomain:8050,而不让客户端看到url中的端口号。客户端应始终查看应在内部解析为mydomain:8050的mydomain.com 我在端口80上运行IIS服务器。我在其中创建了一个站点,只是为了使用重写选项,该选项可以解析为mydomain:8050。它和我使用的模式不匹配 模式:((?:[^\/\n]\/\/)+)(.*) 重写URL:{R:1

我的应用程序托管在tomcat的8050端口下<代码>我的域名:8050。现在,我想要一个友好的url,比如说
mydomain.com
,用于访问
mydomain:8050
,而不让客户端看到url中的端口号。客户端应始终查看应在内部解析为
mydomain:8050
mydomain.com

我在端口80上运行IIS服务器。我在其中创建了一个站点,只是为了使用重写选项,该选项可以解析为
mydomain:8050
。它和我使用的模式不匹配

模式:
((?:[^\/\n]\/\/)+)(.*)
重写URL:
{R:1}:8050{R:2}

然后我在端口90上安装了ApacheHTTP服务器。在IIS站点中使用重定向将URL重定向到
mydomain:90$S$Q
,然后在Apache中使用重写将其内部重定向到
mydomain:8050
。当我在其中有一个查询字符串时,如
mydomain.com/queryString
,这是有效的,但如果我只键入
mydomain.com
,则不起作用。我可以看到它重定向到
mydomain:90
,并在没有执行任何重写规则的情况下停止。这也会将URL更改为
mydomain:90
,并且对客户端可见

我的要求是,当用户进入
mydomain.com
时,它应该在内部解析为
mydomain:8050
(如果有查询字符串),而客户端不会看到它。我让IIS在端口80上运行,apache在端口90上运行。我怎样才能做到这一点?我相信这可以在IIS的重写规则中处理,但我不确定如何做到这一点

重写到另一台服务器基本上是代理。我们需要的是一个 IIS中的反向代理设置,基本上代理所有请求 从头到尾 )

  • 确保在IIS上安装了模块
  • 创建这样的反向代理规则


我尝试了这个,但我没有看到它被重写到
mydomain:8050
。它在访问mydomain.com时出错
它会出现什么错误?您是否安装了ARR,如果没有安装,它将无法工作。对不起,我错过了关于ARR的信息。如何检查它是否已安装?我是IIS新手。我试图安装ARR,但它说它已经安装。所以我相信它已经存在了。所以重写规则后的问题是我访问
mydomain.com
,它在内部重写到
mydomain:8050
,它在内部重定向到我的单一登录服务器进行身份验证,其url是
some.sso.com/context/some string
。但是,我看到它重定向到
mydomain.com/context/some string
,失败时出现错误
404
。我猜
some.sso.com…
被转换为
mydomain.com/context…
,这是不正确的。
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
   <match url="(.*)" />
   <conditions>
    <add input="{CACHE_URL}" pattern="^(https?)://" />
   </conditions>
   <action type="Rewrite" url="{C:1}://mydomain:8050/{R:1}" />
</rule>