获取 Windows 本地主机(端口 80)以转发到端口 8080 以获取 Apache 服务

Sco*_*ttS 9 windows apache-http-server port-forwarding wamp

最近的发现

将 IIS 设置回 port 80,当我在http://localhost/WHS 计算机上安装时,它给了我“此网站的安全证书有问题”警告页面。如果我仍然“继续”,则会出现此 URLhttps://localhost/Remote/logon?ReturnUrl=%2fremote用于 Windows Home Server 2011 远程 Web 访问usernamepassword. 现在,我记不清了,但我不相信最初只是http://localhost/提出了这个问题。但是,这似乎可能会影响任何访问 localhost 的尝试(无论端口如何)。

实际上可能是主要问题

哦,网络的错综复杂!一直困扰我的一件事是为什么其中两个站点会“部分”出现,而其他站点则根本不会出现。然后,运行 Firebug 的 NET 跟踪向我揭示了我的主要问题是我的 ISP 充当 DNS 代理,当然它没有找到我的测试站点。但它确实找到了两个网站上实时的www.(不test.)地址,并出现就可以提供这些,但图像被阻止,因为(我认为)我已经设置了块如果没有访问图像文件从www.该特定站点。

这解释了未显示图像(预计直接localhost:8080调用)的奥秘以及“部分”找到五个站点中的特定两个站点的奇怪行为。

现在我需要弄清楚如何正确配置我的路由器或代理文件以重定向回我的 WHS 计算机。我正在使用 Wildblue 卫星互联网服务,因为我不在任何更快的服务连接范围内。他们有一个“优化器”文件(不知道大家能不能看到,没有的话就跟这个版本基本一样),我可以修改一下放到本地系统上实现我需要什么,但我不确定我可能需要在那里做什么。

如果有人对修改该文件或如何配置我的 Linksys E1200 路由器以避免发送到本地站点的代理有任何建议,那么这可能是我解决问题的第一步(也可能是最后一步)。

基于harrymc建议的代表性代码......仍然无法正常工作

IIS 端口设置为:90.

httdp 文件:

Listen *:80
ServerName localhost:80
Run Code Online (Sandbox Code Playgroud)

vhosts 文件:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName localhost
    ProxyRequests off
    ProxyPass / http://127.0.0.1:90/
    ProxyPassReverse / http://127.0.0.1:90/
</virtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site1.net/httpdocs"
    ServerName test.site1.net
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site2.net/httpdocs"
    ServerName test.site2.net
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site3.com/httpdocs"
    ServerName test.site3.com
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site4.com/httpdocs"
    ServerName test.site4.com
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site5.com/httpdocs"
    ServerName test.site5.com
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

以前的更新:我认为是主要问题(可能是子问题)

如何让 Windows Home Server(运行 IIS)将特定的本地主机 URL 转发到端口,8080以便在同一台机器上运行的 Apache(不是 IIS)选择请求来为页面提供服务?

c:\Windows\System32\drivers\etc\hosts文件已更改(见下文),但我认为这与重新路由到新端口无关。我还假设 IIS 正在获取test.whatever端口上的特定url 请求80并路由到同一端口上的自己的本地主机。

我从在研究中发现的网站上的提示下载了应用程序请求路由,但在查看它时,我不确定它是否会有所帮助(我希望通过它设置一些基于 url 的转发到端口)。我是一名网页设计师,而不是网络向导。所以这一切如何运作对我来说有点难以捉摸。8080

一个可能的方向

基于此链接(在根据下面 erikxiv 的第一条评论搜索更多内容后发现)我在 IIS 中尝试了以下内容作为 URL 重写:

出站规则:

匹配:(.*似乎测试没问题)

状况:

匹配任何...(这些似乎测试模式匹配可以)

{HTTP_HOST} Matches the Pattern test\.site1\.net
{HTTP_HOST} Matches the Pattern test\.site2\.net
{HTTP_HOST} Matches the Pattern test\.site3\.com
Run Code Online (Sandbox Code Playgroud)

重写动作:

http://localhost:8080/{R:0} (it would not let me put R:1 like the example)
Run Code Online (Sandbox Code Playgroud)

但是好像还是没有转发!


下面的信息现在是新的、上面的请求背后的所有背景。


背景信息

我最近将运行 Windows XP 的旧桌面更改为 Windows Home Server (2011)。旧计算机也是在 Apache 安装上运行的本地测试站点的主机。做一些研究发现在 WHS 机器上运行 Apache 并没有我最初想象的那么困难(许多站点说 WHS 和 Apache 的 IIS 会导致问题,但我发现的一些提到如果设置正确,根本没有问题- - 基本上,确保没有端口冲突)。

所以我在 WHS 电脑上安装了WAMP(64 位版本),并将 Apachehttpd配置文件中的设置更改为监听端口,8080这样就不会与 IIS 发生冲突。我在 XP 计算机上设置了我的虚拟主机文件,只是端口也发生了变化。

基本上,一切似乎都运行良好(但是,请参阅更新),除了......

(原始)问题

虽然本地站点的页面拉得很好,并且所有 css 和 javascript 都在运行,但每个图像文件都没有显示. 路径信息是正确的,通过右键单击和选择来证明View Image Info(在 Firefox 中......顺便说一下,图像不会在任何浏览器中显示,所以它不是浏览器错误)。

我已经注意到了,然而,就是Type在图像信息框显示text/html,而不是PNG ImageJPEG Image等,这是在下面的地方显示的路径(地址)信息的信息-在这一节,它承认该文件本身是Type任一ImageBackground

但是尽管如此,似乎不是在 html(实际上是 php 生成的 html)中识别图像的正确 mime 类型(我假设),而是尝试将图像(无论是img元素还是 css background-image)处理为文本,从而给我什么!但我想不通为什么。mime控制 Apache mime-types的文件是正确的。这些页面具有以下标题...

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
Run Code Online (Sandbox Code Playgroud)

...但那些不应该导致问题(它们在 XP 上运行时不会,也不会在实时站点上运行)。

所以我正在寻求关于以下方面的想法:

  1. 我对 mime-type 问题的分析是否正确(基于更新,可能不是)?
  2. 我还能在哪里查看可能导致问题的地方,以及如何纠正它?是否仍然与 WHS 上的 IIS 冲突,如果是,那是什么?它可能是 php 中的任何东西(这似乎不太可能),如果是,是什么?我还可以在 Apache 中检查什么?

更新信息(有更多 [相关?] 问题)

做更多的事情,我得出的结论是,至少部分问题似乎是对 port 的更改:8080。首先,我开始意识到在访问我的所有网站时,并非所有事情都如我所想。我的c:\Windows\System32\drivers\etc\hosts文件中有这个表示:

127.0.0.1   localhost
127.0.0.1   test.site1.net
127.0.0.1   test.site2.net
127.0.0.1   test.site3.com
127.0.0.1   test.site4.com
127.0.0.1   test.site5.com
Run Code Online (Sandbox Code Playgroud)

我的 apachevhosts文件中的这种表示:

NameVirtualHost *:8080

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site1.net/httpdocs"
    ServerName test.site1.net
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site2.net/httpdocs"
    ServerName test.site2.net
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site3.com/httpdocs"
    ServerName test.site3.com
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site4.com/httpdocs"
    ServerName test.site4.com
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site5.com/httpdocs"
    ServerName test.site5.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这是行为site1并且site4显示出来,但没有图像。其他三个根本没有出现,而是给了Network Error (dns_unresolved_hostname)

但是,如果我通过localhost:8080在 url 中使用来访问 WHS 机器上 vhosts 中的第一个站点,那么图像确实会显示,并且我的 vhosts 文件中的第一个站点也会显示(这是预期的);然而,它会这样做,即使它是以前不会的(所以如果我移动site2到第一个位置,它会通过localhost:8080调用开始“工作” )。

我知道我的图像文件在通过url 中的语法访问时返回403更正,最初我说 404)错误test.site4.com,我怀疑我的图像显示为text/html因为文件返回该错误(所以我不认为它现在是一个 mime 类型的问题,因为找不到图像)。但奇怪的是路径是正确的,并且非图像文件(javascript 和 css)运行良好。

所以在我看来,这似乎是端口切换到8080. 我现在的问题是:

  1. 为什么我的 hosts 和 vhosts 文件没有正确找到所有站点(在 Windows Home Server 上是否还有其他一些文件需要修改)?
  2. 在它确实适用的那些网站上,为什么特别找不到图像(403 错误,我相信这是“禁止的”,如果允许访问网站文件夹中的其他文件,这毫无意义)?
  3. 为什么localhost:8080不管与前两个问题有关的访问如何工作?

一些进一步的信息

有人要求我发布日志文件。但是,我发现在我通过直接localhost:8080调用“默认”站点访问的那些情况下,除了(它出现)之外,没有发生任何日志。

因此,我关闭了 WAMP 服务,并访问了 url 并发现了与 WAMP 运行时相同的行为。这似乎表明 IIS 仍在控制域名,而不是 Apache 获取它们(有人可以在那里确认我的假设吗?,因此问题很可能仍然是控制自己到 WAMP 服务器的问题。

Sco*_*son 1

您是否有一个 .htaccess 文件导致图像被用作文本/html?

 <filesMatch "\.(htm|html|css|js|png|jpg)$">
 ForceType 'text/html; charset=UTF-8'
 </filesMatch>
Run Code Online (Sandbox Code Playgroud)