web-dev-qa-db-ja.com

Windowsローカルホスト(ポート80)を取得して、Apacheサービスのポート8080に転送します。

最近の発見

IISをポート_80_に戻すと、WHSコンピューターに_http://localhost/_を入力すると、「このWebサイトのセキュリティ証明書に問題があります」と表示されます。警告ページです。とにかく「続行」すると、このURLはusernameおよびpasswordのWindows Home Server 2011リモートWebアクセスに対して_https://localhost/Remote/logon?ReturnUrl=%2fremote_で表示されます。確かに、元々_http://localhost/_だけがこの問題を引き起こしたとは思いませんが、これはlocalhostへのアクセス試行に影響を与える可能性があるようです(ポートに関係なく)。

実際の主な問題は何ですか

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

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

次に、ルーターまたはプロキシファイルを正しく構成して、WHSコンピューターにリダイレクトする方法を理解する必要があります。私は、Wildblue衛星インターネットサービスを利用しています。これは、より高速なサービス接続の圏外にいるためです。彼らは "optimizer" file を持っています(それが誰にでも見えるかどうかはわかりませんが、そうでない場合は 基本的にこのバージョンと同じです )、私は自分のローカルシステムを変更して、自分の必要なことを達成することができるかもしれませんが、そこで何をする必要があるのか​​正確にはわかりません。

そのファイルの変更、またはローカルサイトの場合にプロキシへの送信を回避するために私のLinksys E1200ルーターを構成する方法について誰かが提案を持っている場合、それが私の問題を解決するための最初の(そしておそらく最後の)ステップになるかもしれません。

harrymcの推奨に基づく代表的なコード...まだ機能していません

IISポートは_:90_に設定されています。

httdp file:

_Listen *:80
ServerName localhost:80
_

vhosts file:

_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>
_

以前の更新:私が信じていたことが主な問題(副問題である可能性があります)

IISを実行しているWindows Home Serverが特定のlocalhost URLをポート_8080_に転送して、同じマシンで実行されているApache(IISではない)がリクエストをピックアップしてページを処理するようにするにはどうすればよいですか?

_c:\Windows\System32\drivers\etc\hosts_ファイルは変更されていますが(以下を参照)、新しいポートへの再ルーティングとは関係がないと思います。また、IISはポート_test.whatever_で特定の_80_ url要求を取得し、同じポートの独自のローカルホストにルーティングしていると思います。

リサーチでは Application Request Routing見つけたサイトのヒント からダウンロードしましたが、それを見て、役立つかどうかわかりません(私の希望)ポート_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を実行することは、最初に思ったほど難しくはないことを明らかにしました(多くのサイトではIIS WHSとApacheが問題を引き起こすだろうと言っていますが、すべて正しく設定されている場合-基本的に、ポートの競合がないことを確認してください)。

それで [〜#〜] wamp [〜#〜] (64ビットバージョン)をWHSコンピューターにインストールし、Apache httpd設定ファイルの設定を変更してリッスンしましたポート_8080_にあるため、IISとの競合はありません。私は仮想ホストファイルをXPコンピュータと同じようにセットアップしましたが、ポートも変更しただけです。

基本的に、everythingは正常に実行されているようです(ただし、更新を参照してください)、except ...

(元の)問題

ローカルサイトへのページが正常に表示され、すべてのcssとjavascriptが機能している間、すべての画像ファイルが表示されませんパス情報は正しい右クリックして_View Image Info_を選択するとわかるように(Firefoxでは、画像はどのブラウザにも表示されないため、ブラウザのバグではありません) )。

ただし、画像情報ボックスのTypeに_text/html_または_PNG Image_などではなく_JPEG Image_が表示されていることに気づきました。これは以下の情報にありますパス(アドレス)情報が表示されます。そのセクションでは、ファイル自体がType _ImageまたはBackgroundのいずれかであることを認識します。

しかし、その事実にもかかわらず、html(実際にはphpで生成されたhtml)内の画像の正しいMIMEタイプ(私は想定)を認識するのではなく、代わりに画像を処理しようとしているようです(img elementまたはcss _background-image_)をテキストとして、何も与えない!しかし、理由はわかりません。 Apache MIMEタイプを制御するmimeファイルは正しいです。ページには次のヘッダーがあります...

_<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
_

そして、私のApache vhostsファイルでのこの表現:

_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)が表示されます。

ただし、URLで_localhost:8080_を使用してWHSマシンのvhostsの最初のサイトにアクセスすると、次に画像do show up、および私のvhostsファイルの最初にあるサイトも表示されます(これは予想されます)。ただし、以前はそうでなかった場合でもそうです(つまり、_site2_を最初の位置に移動すると、_localhost:8080_呼び出しによって「機能」し始めます)。

画像ファイルがURLの_403_構文を介してアクセスすると_test.site4.com_(修正済み、元々は404と表示されていた)エラーが返されることを知っており、画像が表示されていると思われるファイルがそのエラーを返しているため、_text/html_まで上昇しています(したがって、画像の検索に失敗したほどMIMEタイプの問題であるとは考えていません)。しかし奇妙なことに、パスは正しく、画像以外のファイル(JavaScriptとCSS)は問題なく表示されます。

だから私の頭の中では、ポートスイッチが_8080_になっているようです。私の今の問題は:

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

さらに詳しい情報

ログファイルの投稿をリクエストされました。ただし、「デフォルト」サイトへの直接_localhost:8080_呼び出しを介してアクセスした場合、それらのインスタンス(表示される)を除いて、ログが発生していないことがわかりました。

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

9
ScottS

画像がtext/htmlとして提供される原因となっている.htaccessファイルがありますか?

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

スレッド IIS Apacheへのリダイレクト には、非常に単純なソリューションが含まれています。

最後のエントリの作成者は、IISでのリダイレクトは制限されており、ジョブを実行するには制限があると述べています。

彼のソリューションを使用して、IISを設定して、80以外のポート、たとえば90からリクエストを受信します。次に、ポート80のリダイレクトを使用して、ポート80と8080の両方のレシーバーとしてApacheを配置しますポート90に。ApacheはどうやらIISができないことを行うように管理しています。

0
harrymc

あなたが持っている必要があります

<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を使用すると、2つのクラスC ip 192.168.1.100が追加され、192.168.1.200を追加すると、クラスのためにSEOにも役立ちます相互にリンクする2つの異なるWebサイトのC IPアドレス。

0
Tadeh Davtian

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

0
Martino Dino

DNSの問題まで追跡してきたため、基本的な結果として、構成可能なローカルDNSサーバーが必要になります。 Linksys E1200ルーターとWindows Home Serverについても言及しているので、2つの方法があります。

まず、ルーターでサードパーティのファームウェア(DD-WRT、OpenWRT、Tomatoなど)を実行することを検討できます。あなたが持っているものはBroadcomチップセットを使用していて、適切なフラッシュが必要です。 DD-WRTはそれをサポート対象としてリストします。私の最大の懸念は、どういうわけか、サードパーティのルーターファームウェアコミュニティが、90年代初頭にLinuxを実行しようとしたかのように発展してきたように見えることです。必要なものを見つけるためにフォーラムを掘り下げることはできますが、DD-WRTサイトのルーターデータベースは信頼できないので、間違ったものに誘導されます。全体として、このオプションは私を自信をもって満たすことができません、そしてあなたが利用可能な2番目のルーターを持っているのでなければ、私はあなたがこの種のことを微調整したくない限りそれをお勧めすることができるかどうかわかりません。

次に、 このフォーラムのスレッド で説明されているように、WHSにRDPしてDNSサーバーをオンにすることができます。基本的なアプローチ、RDPイン、コントロールパネル、プログラムの追加と削除、Windowsコンポーネントの追加と削除(ボタン)、[DNSサーバー]チェックボックスをオン、元に戻す私がよくわからないのは、これでDNS管理コンソールを入手できるかどうかであり、それをテストするWHSボックスがありません。そのコンソールが表示される場合は、管理ツール/ DNSの下にあります。希望どおりに使用するには、新しい転送ゾーンを追加する必要があります。あなたがしている種類のことのために、私は各ホストにゾーンを追加します(たとえば、www.samplesite.whateverのゾーンを追加します)。次に、名前が指定されていないAレコードエントリを追加します。ゾーン。もう1つの方法は、samplesite.whateverのゾーンを追加してから、名前付きのAレコード(「www」や「mail」など)を追加することですが、ブロックしたくないものをブロックしてしまう可能性があります。よりターゲットを絞ったゾーンは、リダイレクトしたくないものに影響を与えないようにします。次に、このボックスですべてのシステムをDNSサーバーとして指定します。デフォルトでは、ISPのDNSサーバーを完全にバイパスして独自の外部DNS解決を行います。これらを次の段階として使用する場合は、DNSサーバーのプロパティでそれらのアドレスをフォワーダーとして指定できます(右クリックして探し回ります)。

3番目に、オプション2が機能せず、オプション1が怖い場合は、内部でLinuxボックスをセットアップし、DNSサーバーとしてセットアップできます。やり方はたくさんあります。大まかな検索が行われました この記事のMark Kolichによる これは、まさにそれを行うための適切な指示のようです。傾向がある場合は、Linuxベースのホスティングを試すために必要なリソースも提供される可能性があります(.NETなどのWindowsベースの開発を行っている場合を除く)。

これ ウィキペディアDNSサーバーの比較 も役立つかもしれません。注目に値するのは、Simple DNS Plus(商用)、Posadis(無料、古い?2004)、MaraDNS(無料、非GUI、注目に値する)、およびUnbound(無料、Windowsバイナリダウンロードがあり、さらに掘り下げていない)です。 。これらはすべてWindowsで実行する必要があります。

0
fencepost