Windows ローカルホスト (ポート 80) を Apache サービスのポート 8080 に転送する

Windows ローカルホスト (ポート 80) を Apache サービスのポート 8080 に転送する

最近の発見

IIS をポート に戻して、 WHS コンピュータに を80入れると、「この Web サイトのセキュリティ証明書に問題があります」という警告ページが表示されます。それでも「続行」すると、およびの Windows Home Server 2011 リモート Web アクセスのこの URL が表示されます。今、はっきりと思い出せませんが、当初 だけがこの問題を提起したとは思いません。ただし、これは localhost へのアクセス試行 (ポートに関係なく) に影響する可能性があるようです。http://localhost/https://localhost/Remote/logon?ReturnUrl=%2fremoteusernamepasswordhttp://localhost/

実際のところ主な問題は何だろうか

ああ、ネットワークの複雑さ!ずっと気になっていたのは、なぜ2つのサイトが「部分的に」表示され、他のサイトがまったく表示されないのかということでした。その後、FirebugのNETトラッキングを実行すると、次のことがわかりました。私の主な問題は、ISPがDNSプロキシとして機能していることです、もちろんテスト サイトは見つかりません。ただし、www.( ではないtest.) アドレスで稼働している 2 つのサイトは見つかり、それらのサイトを提供しているように見えますが、特定のサイトの からでない場合は画像ファイルへのアクセスをブロックするように設定したため、画像がブロックされます (と推測します) www.

これにより、画像が表示されない (直接localhost:8080呼び出しを除く) という謎と、5 つのサイトのうち特定の 2 つを「部分的に」見つけるという奇妙な動作が説明されます。

今、ルーターまたはプロキシファイルを正しく設定して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 を実行) が特定の localhost URL をポートに転送して、8080同じマシン上で実行されている Apache (IIS ではない) が要求を取得してページを提供するようにするにはどうすればよいですか?

ファイルc:\Windows\System32\drivers\etc\hostsは変更されています (下記参照) が、これは新しいポートへの再ルーティングとは関係がないと思われます。また、IIS はtest.whateverポート上の特定の URL 要求を取得し80、同じポート上の独自のローカル ホストにルーティングしていると思われます。

私がダウンロードしましたアプリケーションリクエストルーティングから私が見つけたサイトのヒント調査中ですが、調べてみても、役に立つかどうかはわかりません (私の希望は、ポートへの URL ベースの転送を設定することです8080)。私は Web デザイナーであり、ネットワーク ウィザードではありません。そのため、これらすべてがどのように機能するかは、私にはやや理解しがたいです。

進むべき方向

オフに基づいてこのリンク(以下の erikxiv の最初のコメントに基づいてさらに検索した後に見つかりました) URL 書き換えとして IIS で次の操作を試みました。

送信ルール:

一致: .*(テストでは問題なかったようです)

条件:

いずれかに一致... (これらはパターン一致をテストするのに問題ないようです)

{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 の IIS と Apache が問題を引き起こすと書かれていますが、私が見つけたいくつかのサイトでは、正しく設定すればまったく問題ないと書かれていました。基本的に、ポートの競合がないことを確認してください)。

そこで私はワンプhttpd(64 ビット バージョン) を WHS コンピューターにインストールし、Apache構成ファイルの設定を変更してポートをリッスンするように8080したので、IIS との競合は発生しません。仮想ホスト ファイルは XP コンピューターと同様に設定しましたが、ポートも変更しました。

基本的に、すべては順調に進んでいるように見えた(ただし、更新を参照)、を除外する...

(元の)問題

ローカルサイトのページは正常に表示され、すべてのCSSとJavaScriptは機能していますが、すべての画像ファイルが表示されないパス情報は正しい右クリックして選択するとそれがわかりますView Image Info(Firefox の場合...ちなみに、画像はどのブラウザでも表示されないため、ブラウザのバグではありません)。

しかし、私が気づいたのは、Type画像情報ボックスの には、やなどtext/htmlではなくが表示されていることです。これは、パス (アドレス) 情報を表示する下の情報にあり、そのセクションでは、ファイル自体がまたは のいずれかであると認識されます。PNG ImageJPEG ImageTypeImageBackground

しかし、それにもかかわらず、HTML (実際には PHP が生成した HTML) 内の画像の正しい MIME タイプ (私が推測するところ) を認識するのではなく、画像 (要素またはimgCSS background-image) をテキストとして処理しようとしているため、何も返されないようです。しかし、その理由はわかりません。Apache mimeMIME タイプを制御するファイルは正しいです。ページには次のヘッダーがあります...

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

...しかし、これらが問題の原因となることはないはずです (XP で実行しているときも、ライブ サイトでも問題の原因にはなりません)。

そこで私は以下の点について意見を求めています:

  1. MIME タイプが問題であるという私の分析は正しいでしょうか (更新に基づくと、おそらく正しくありません)?
  2. 他に問題の原因となっている可能性のある箇所はどこでしょうか。また、どのように修正すればよいでしょうか。WHS 上の IIS との競合がまだ発生している可能性はありますか。もしそうなら、それは何でしょうか。PHP に何か問題がある可能性はありますか (これは考えにくいですが)。もしそうなら、それは何でしょうか。Apache で他に確認できるものはありますか。

更新された情報(関連する問題がさらに追加されました)

さらにいろいろいじってみると、問題の少なくとも一部はポートの変更によるものだという結論に達しました: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

そして私の 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>

これがその行動だ:site1と はsite4表示されますが、画像はありません。他の 3 つはまったく表示されませんが、 が表示されますNetwork Error (dns_unresolved_hostname)

localhost:8080しかし、 URLを使用してWHSマシンのvhostsの最初のサイトにアクセスすると、そして画像する現れるまた、vhosts ファイル内の最初のサイトも表示されます (これは予想どおりです)。ただし、以前は表示されなかったサイトであっても表示されます (したがって、site2最初の位置に移動すると、呼び出しによって「動作」を開始しますlocalhost:8080)。

私の画像ファイルは403訂正します。元々は404と言っていました) エラーがtest.site4.comURL の構文でアクセスしたときに発生し、text/htmlファイルがそのエラーを返しているために画像が表示されているのではないかと考えています (したがって、これは MIME タイプの問題ではなく、画像が見つからないことによる問題だと思います)。しかし、奇妙なことに、パスは正しく、画像以外のファイル (JavaScript および CSS) は正常に表示されます。

したがって、私の考えでは、ポート スイッチに問題があるように思われます8080。現在の問題は次のとおりです。

  1. ホスト ファイルと vhosts ファイルがすべてのサイトを正しく検出しないのはなぜですか (Windows Home Server で変更する必要がある他のファイルがあるのでしょうか)?
  2. それが機能するサイトで、なぜ画像が具体的に見つからないのでしょうか (403 エラーは「禁止」であると私は思いますが、Web サイト フォルダー内の他のファイルへのアクセスが許可されている場合は意味がありません)?
  3. localhost:8080最初の 2 つの問題に関しては、なぜアクセスが機能するのでしょうか?

さらに詳しい情報

localhost:8080ログ ファイルを投稿するように要求されました。しかし、(どうやら) 「デフォルト」サイトへの直接呼び出しを介してアクセスした場合を除き、ログは生成されていないことがわかりました。

そこで、WAMP サービスをオフにして、URL にアクセスしたところ、WAMP が実行されていたときと同じ動作が見つかりました。これは、Apache がドメイン名を取得するのではなく、IIS が依然としてドメイン名を制御していることを示しているようです (誰か私の仮定を確かめてもらえますか?したがって、問題は WAMP サーバーへの制御自体の取得にまだ関係している可能性があります。

答え1

画像が text/html として提供される原因となっている .htaccess ファイルがあるのではないでしょうか。

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

答え2

access.log ファイル (少なくとも画像リクエストの 404 ステータスを示す数行) を提供していただければ、何が問題なのか確認できます。ドメイン名の問題か、サイトで画像に絶対パスを使用している (推測ですが) ため、Apache がこれを正しく処理できないのではないかと思います。

答え3

スレッドIIS を Apache にリダイレクトする非常に単純な解決策が含まれていますが、これはあなたの解決策とは逆の方向に進みます。

最後のエントリの著者は、IIS のリダイレクトは目的を達成するには制限が多すぎると述べています。

彼のソリューションを使用すると、80 以外のポート (たとえば 90) からの要求を受信するように IIS を設定します。次に、ポート 80 と 8080 の両方の受信側として Apache を配置し、ポート 80 をポート 90 にリダイレクトします。Apache は、IIS ではできないことを実行できるようです。

答え4

必要なのは

<directory>
</directory>

</VirtualHost>許可する前に 。

このようなもの

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

私は、インターネット プロトコル v4 IPv4 設定 (詳細 IP 設定) で、IIS に 192.168.1.100:80、Apache に 192.168.1.200:8080 を使用しています。クラス C IP 192.168.1.100 が 2 つあり、192.168.1.200 を追加します。クラス C IP アドレスが 2 つの異なる Web サイト間で相互にリンクされるため、SEO にも役立ちます。

関連情報