我们有一个 Apache Web 服务器(充当代理),它位于多个服务器上,这些服务器上运行着不同的应用程序:IIS、Tomcat、jBoss 等。Apache 服务器充当我们单个静态外部 IP 地址的代理。我们有多个域名指向单个 IP 地址,Apache 会将请求重新路由/代理到正确的服务器。
一个问题是,当代理到 IIS6 实例时,请求被正确路由,但是当用户输入域名 example.com/home 时,他们的地址栏会更改为 192.168.10.30/home 或该服务器的内部 IP 地址。哎哟。
另一个问题是,当从同一个 IIS6 实例加载页面时,我们遇到的问题就是页面上的部分内容可以加载,但不是全部。一些图像“丢失”,一些 javascript 无法加载,等等。
注意:我不是在责怪 IIS6,但它是我们遇到问题的唯一系统。
这是我正在使用的 Apache 中的 VirtualHost 条目。我的配置中是否缺少某些内容?
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ProxyPass / http://192.168.10.50/
ProxyPassReverse / http://192.168.10.50/
ProxyPreserveHost On
</VirtualHost>
以下是 502 代理错误有时出现在请求中(可以是任何随机请求 - css,js,html 等):
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>502 Proxy Error</title>
</head><body>
<h1>Proxy Error</h1>
<p>The proxy server received an invalid response from an upstream server.<br />
The proxy server could not handle the request <em><a href="/public/example/js/jquery-1.3.2.min.js">GET /public/example/js/jquery-1.3.2.min.js</a></em>.<p>
Reason: <strong>Error reading from remote server</strong></p></p>
</body></html>
答案1
答案2
IIS 本身不会导致该重定向,除非专门设置了重定向。最有可能是代码中的某些内容导致重定向,或者是 Apache 反向代理上的规则导致的。
缩小范围的一个好方法是在 IIS 框上进行本地测试,看看它是否重定向。(尽管测试可能会受到污染,因为您将使用不同的 IP 进行测试)。如果它重定向到那里,那么您就知道来源了,否则它处于代理级别。