取得 Windows localhost(連接埠 80)以轉送至 Apache 服務的連接埠 8080

取得 Windows localhost(連接埠 80)以轉送至 Apache 服務的連接埠 8080

最近的發現

將 IIS 設定回連接埠後80,當我在 WHS 電腦上安裝時http://localhost/,它會顯示「此網站的安全性憑證有問題」警告頁面。如果我“繼續”,則會出現此 urlhttps://localhost/Remote/logon?ReturnUrl=%2fremote用於 Windows Home Server 2011 遠端 Web 存取usernamepassword。現在,我記不清了,但我不相信最初只是提出http://localhost/這個問題。但是,這似乎可能會影響任何存取本機主機的嘗試(無論連接埠為何)。

實際上可能是什麼主要問題

哦,網路的複雜性!一直困擾我的一件事是為什麼其中兩個網站會「部分」出現,而其他網站則根本不出現。然後,執行 Firebug 的 NET 追蹤向我揭示了這一點我的主要問題是我的 ISP 充當 DNS 代理,當然也不是找不到我的測試地點。但它確實找到了位於www.(非test.)地址的兩個站點,並且似乎提供了這些站點,但圖像被阻止,因為(我假設)我已經設置了阻止訪問圖像文件,如果不是www.來自特定站點。

這解釋了圖像未顯示的奧秘(預計直接localhost:8080呼叫)以及「部分」找到五個站點中的特定兩個站點的奇怪行為。

現在我需要弄清楚如何正確設定我的路由器或代理檔案以重新導向回我的 WHS 電腦。我使用的是 Wildblue 衛星網路服務,因為我不在任何更快的服務連線範圍內。他們有一個“優化器”文件(我不知道大家能不能看到,如果不能的話就是和這個版本基本上一樣),我也許能夠修改並安裝我的本機系統來實現我所需要的,但我不確定我到底需要在那裡做什麼。

如果有人對修改該檔案或如何配置我的 Linksys E1200 路由器以避免發送到代理(如果它是本地站點)有任何建議,那麼這可能是我解決問題的第一步(也可能是最後一步)。

基於 harrymc 的建議的代表性代碼...仍然無法正常工作

IIS 連接埠設定為:90.

httdp文件:

Listen *:80
ServerName localhost:80

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>

上次更新:我什麼曾相信成為主要問題(可能是次要問題)

如何使 Windows Home Server(運行 IIS)將特定的本機主機 URL 轉送到端口,8080以便在同一台電腦上執行的 Apache(不是 IIS)選擇請求來提供頁面服務?

c:\Windows\System32\drivers\etc\hosts文件已更改(見下文),但我認為這與重新路由到新連接埠無關。我還假設,IIS 正在接收test.whatever連接埠上的特定 url 請求80,並路由到同一連接埠上其自己的本地主機。

我下載了應用程式請求路由我發現的一個網站上的提示8080在研究中,但在查看它時,我不確定它是否有幫助(我希望透過它設定一些基於 url 的轉發到連接埠)。我是網頁設計師,不是網路奇才。所以這一切是如何運作的對我來說有點難以捉摸。

可能的發展方向

基於這個連結(根據下面 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

重寫動作:

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

但好像還是沒有轉發!


以下資訊現在是上述新請求背後的所有背景。


背景資訊

我最近將執行 Windows XP 的舊桌面變更為 Windows Home Server (2011)。舊電腦也是執行 Apache 安裝的本機測試站點的主機。做了一些研究發現,在WHS 機器上運行Apache 並不像我最初想像的那麼困難(許多站點都說WHS 和Apache 的IIS 會導致問題,但我發現有一些站點提到,如果設置正確,根本不會出現問題) - 基本上,確保沒有連接埠衝突)。

所以我安裝了一個瓦姆普(64 位元版本)到 WHS 計算機,並將 Apachehttpd設定檔中的設定變更為偵聽端口,8080因此不會與 IIS 發生衝突。我像在 XP 電腦上一樣設置了虛擬主機文件,只是連接埠也發生了變化。

基本上,一切似乎都運作良好(但是,請參閱更新),除了

(原始)問題

雖然本地站點的頁面正常啟動,並且所有 css 和 javascript 都正常運行,每個圖像檔案均未顯示路徑資訊正確右鍵單擊並選擇即可證明View Image Info(在 Firefox 中......順便說一句,圖像不會在任何瀏覽器中顯示,因此這不是瀏覽器錯誤)。

然而,我注意到圖像資訊框中Type顯示的是text/html,而不是PNG Image或等JPEG ImageTypeImageBackground

但儘管如此,它似乎並沒有識別 html(實際上是 php 生成的 html)中圖像的正確 mime 類型(我假設),而是嘗試將圖像(無論是元素img還是 css background-image)處理為文本,因此什麼也沒有給我!但我不明白為什麼。mime控制 Apache mime 類型的檔案是正確的。這些頁面有以下標題...

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />

……但這些不應該導致問題(它們在 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

vhosts我的 apache檔案中的表示形式:

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>

這是行為site1並且site4正在顯示,但沒有圖像。其他三人根本沒有出現,而是給了Network Error (dns_unresolved_hostname)

localhost:8080但是,如果我透過在 url 中使用來存取 WHS 電腦上虛擬主機中的第一個站點,然後是影像出現,而我的虛擬主機檔案中第一個站點也會顯示(這是預期的);然而,即使它以前不會這樣做(所以如果我移動site2到第一個位置,它就會透過localhost:8080呼叫開始“工作”)。

我知道我的圖像檔案正在返回403(更正了,原來我說的是404)透過 url 中的語法存取時出現錯誤test.site4.com,我懷疑我的圖像顯示是text/html因為文件返回該錯誤(所以我不認為這是 mime 類型的問題,因為找不到圖像)。但奇怪的是,路徑是正確的,並且非圖像檔案(javascript 和 css)運作良好。

所以在我看來,這可能與連接埠切換有關8080。我現在的問題是:

  1. 為什麼我的主機和虛擬主機檔案無法正確找到所有網站(Windows Home Server 上是否還有其他檔案需要修改)?
  2. 在它確實適用的那些網站上,為什麼找不到特定的圖像(我認為出現 403 錯誤,即“禁止”,如果允許訪問網站資料夾中的其他文件,則這是沒有意義的)?
  3. 為什麼localhost:8080對於前兩個問題無論如何訪問都有效?

一些進一步的信息

有人要求我發布日誌檔。但是,我發現除了我通過直接localhost:8080調用“預設”站點進行訪問時(看起來)之外,沒有任何日誌發生。

因此,我關閉了 WAMP 服務,並訪問了該 url,發現了與 WAMP 運行時相同的行為。這似乎表明 IIS 仍在控制域名,而不是 Apache 拾取它們(有人可以證實我的假設嗎?,因此問題很可能仍然是 WAMP 伺服器本身的控制權問題。

答案1

您是否有一個 .htaccess 檔案導致圖像被用作文字/html?

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

答案2

如果您可以提供 access.log 檔案(至少有幾行顯示影像請求的 404 狀態),我們將能夠檢查出了什麼問題。我懷疑這可能只是域名問題,或者您的網站可能使用圖像的絕對路徑(只是猜測...),apache 處理不正確

答案3

執行緒IIS 重定向到 Apache包含一個非常簡單的解決方案,其方向與您的方向相反。

上一篇文章的作者表示,IIS 中的重定向功能太有限,無法完成這項工作。

使用他的解決方案,您可以將IIS 設定為接收來自80 以外的其他連接埠(例如90)的請求。設法做到這一點IIS 不能的。

答案4

你需要有

<directory>
</directory>

之前 </VirtualHost>允許。

像這樣的東西

<Directory "C:\Apache24\htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

我在Internet協定v4 IPv4設定(進階IP設定)中對iis使用192.168.1.100:80,對apache使用192.168.1.200:8080,有2個C類ip 192.168.1.100並增加192.168.1. SEO,因為類C 相互連結的 2 個不同網站的 IP 位址。

相關內容