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


9

最近の発見

IISをポート80に戻した状態http://localhost/で、WHSコンピューターを使用すると、「このWebサイトのセキュリティ証明書に問題があります」という警告ページが表示されます。私はとにかく「続行」場合は、このURLは立ち上がるhttps://localhost/Remote/logon?ReturnUrl=%2fremoteためのWindows Home Serverの2011リモートWebアクセスのためにusernamepassword。今、はっきりとは思い出せませんが、もともとhttp://localhost/この問題が持ち上がっただけだとは思いません。ただし、これはローカルポートへのアクセス試行に影響を与える可能性があるようです(ポートに関係なく)。

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

ああ、ネットワーキングの複雑さ!私を悩ませ続けた1つのことは、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>

以前のアップデート:私主な問題であると信じいたもの(副問題である可能性があります)

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

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

リサーチで見つけたサイトのヒントからApplication Request Routingをダウンロードしましたが、それを見て、それが役立つかどうかわかりません(私の希望は、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

書き換えアクション:

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が問題を引き起こすと述べていますが、正しく設定されていれば、まったく問題ないと述べたサイトもあります。 -基本的に、ポートの競合がないことを確認します)。

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

基本的に、すべてが正常に実行されるように見えた(ただし、更新を参照)、を除いて ...

(元の)問題

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

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

しかし、その事実にもかかわらず、html(実際にはphpで生成されたhtml)内の画像の正しいMIMEタイプ(私は想定)を認識するのではなく、次のように画像(img要素またはcssのいずれか)を処理しようとしているbackground-imageようですテキスト、したがって私に何も与えない!しかし、理由はわかりません。mimeApacheの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>

これが動作です:site1site4が表示されていますが、画像はありません。他の3つはまったく表示されませんが、表示されますNetwork Error (dns_unresolved_hostname)

ただし、localhost:8080URL を使用して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エラー、つまり「禁止されています」、Webサイトフォルダー内の他のファイルへのアクセスが許可されている場合は意味がありません)。
  3. localhost:8080最初の2つの問題に関係なく、アクセスが機能するのはなぜですか?

さらに詳しい情報

ログファイルを投稿するようにリクエストされました。しかし、localhost:8080「デフォルト」サイトへの直接呼び出しを介してアクセスした場合を除いて、ログが表示されない(表示される)ことに気付きました。

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


アクセスできるように、実際の画像の権限が設定されていることを確認してください。
cutrightjm

@ekaj-私は推測に感謝し、許可をチェックしましたが、それは明らかに問題ではありません。
ScottS

@ekaj-私は問題に更新された情報を追加しました。これは、別の「推測」(おそらく解決策!)を思い付くのに役立つ可能性があります。
ScottS

Application Request Routingが機能しないことを確認しますか?blogs.iis.net/wonyoo/archive/2008/07/09/…あなたが求めていることをしているようです。異なるサイトに一致するようにいくつかのルールを記述したい場合があることに注意してください。
erikxiv 2012

@ erikxiv--いいえ、それについてはよくわかりません。私の問題は、私が私に馴染みのない領域にいるという事実でした。そのため、それを機能させる方法を知りませんでした。リンクを調べてご連絡いたします。
ScottS

回答:


1

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

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

良い提案ですが、.htaccessファイルを持っているのは2、3のサイトだけForceTypeで、コードに含まれているサイトはありません。
ScottS

@ ScottWilson--別の解決策を考え出すのに役立つ可能性がある更新された情報を私の問題に追加しました。
ScottS

0

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


面白い。直接localhostアクセスを使用していた場合を除いて、試行したアクセスのログファイルはありません。そのため、WAMPサーバーをすべてオフにしたところ、同じ結果が得られることがわかりました。これは、Apacheがリクエストを最初から処理していないことを示しているように見えますが、IISは処理しています。
ScottS

ちなみに、私は以前、画像を403与えているタイプミス
スコッツ

たぶん、ブラウザのリクエストをwiresharkして、それが本当に必要かどうかを確認する方が良いでしょうか?または、ポートへのバインドに失敗した場合、またはアドレスの問題が発生した場合は、Apacheエラーログを確認してください...
Martino Dino

@ MartinoDino--ご提案ありがとうございます。私の質問の一部の情報を更新しました。私の主な問題は、私のWHSコンピューターがテストサイトへの要求を処理していないことではなく、ISPプロキシが処理していることだと思います。それが解決できたら、他のローカルパーツが実際に機能しているかどうかを調べ始めます。
ScottS

0

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

最後のエントリの作成者は、IISでのリダイレクトが制限を超えて機能しないと言っています。

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


@ harrymc--入力いただきありがとうございます。それは役に立つかもしれませんが、私の最新の更新(投稿されたばかり)を見ると、最初の主な問題は、テストURLがローカルコンピューターに到達していないが、私が処理しようとしていることですISPプロキシ。あなたがそれを回避することについていくつかの提案があれば、私は開いています。
ScottS

それでも私の提案と一致する可能性があります。IISは、localhostがローカルループバックインターフェイスであることを検出するのに十分スマートではない可能性があるため、代わりにインターネットで検索します。もちろん、localhostはそこにはありません。これをテストするための適切な環境はありませんが、上記の記事では、Apacheがよりインテリジェントに処理を行うと述べています。
harrymc 2012

@ harrymc--私の質問で述べたように、私は実際にはネットワークの人ではないので、いくつか質問があり、少しガイダンスが必要です。まず、WHSをポート90に変更すると、WHSがホームサーバーとして機能する方法に影響がありますか?第2に、投稿したリンクはサブドメインにアクセスしようとしていることを示していますが、私はそうではありません(むしろ、私は別のローカルドメインにアクセスしようとしています)。それで何か変化はありますか?リンクされたソリューションからのガイダンスとして、Apacheの知識があるので#4-5に従いますが、IISの知識はほとんど持っているので、ポイント#1-3方法がわかりません(または、私の場合でもする必要があります)。
ScottS

#2-3はおそらくあなたのケースには当てはまらず、スキップすることができます。それが主なアイデアなので、#1が必要です。ここでの秘訣は、Apacheを転送を担当するメインのインターネットフロントサーバーにし、IISをApache以外のインターネットに接続されていないセカンダリのローカルサーバーにすることです。たぶん、この記事はポートの変更に役立つかもしれません。これまでに行ったことがない場合は、万が一に備えて、変更するすべてのものを注意深く記録してください。
harrymc 2012

@harrymc-変更を加えたため、WAMPサーバーを起動することすらできません。理由は不明ですが、現時点では、完全なテストが機能するかどうかを確認できません。最初のリンクでは、場合、私も疑問に思ってourdomain.dom私のコンピュータかどうかに何か特定のである(またはそれだけで任意の名前で、彼はサブドメインを扱ったので、...鉱山のあるべきlocalhost?)。さらに、最初のリンクではour.ip.addess、IISへのルーティングのは、Apacheサーバーでも同じコンピューター上にあるため(ポートが異なるだけ)、同じになります。それは問題を引き起こさないはずですよね?
ScottS

0

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ベースの開発を行っている場合を除く)。

このWikipediaのDNSサーバーの比較も役立ちます。注目に値するのは、Simple DNS Plus(商用)、Posadis(無料、古い?2004)、MaraDNS(無料、非GUI、注目に値する)、およびUnbound(無料、Windowsバイナリダウンロードがあり、それ以上掘り下げなかった)です。 。これらはすべてWindowsで実行する必要があります。


お返事ありがとうございます。ある意味DNSの問題であることは事実ですが、ローカルホストの呼び出しでISPのDNSにアクセスしないようにしたいだけです(そうすべきではありません)。システムによって自動的に処理されるべきものを自動的に処理するためにDNSをローカルにセットアップする必要があるのは、どういうわけか "やり過ぎ"のようです。localhostサイトに対する私の要求は、ISPのDNSに送られるべきではありません。
ScottS

ローカルのHostsファイルに関連する行を追加した場合、それらは追加されない可能性があります-XPではc:\ windows \ system32 \ drivers \ etc \ hostsにあり、Vista / 7のどこにあるか、32と32および64ビット。ここに示されているように、それが壊れる可能性があるいくつかのアプリまたはエラー状況を見ました:fencepost.net/2009/11/dns-fails-nslookup-works-fix
fencepost

それらの行をその場所に(最初から)既に追加しましたが、それが64ビットシステム(WHSである)上の正しい場所であるかどうか疑問に思いました。
ScottS

あなたの質問は私にもう少し掘り下げることを導きました、そしてこれ(sepago.de/helge/2009/06/04/…)は非常に関連しているようです。
フェンスポスト

それは面白かったC:\Windows\System32\drivers\etcですが、ファイルがすでに変更したものであったため、どれほど役に立ったかはわかりませんが、ローカルサイトを定義するまではまだ取得されていないようです。記事は、ファイルが64-bitネイティブで、32-bitリダイレクトによって使用されていることを示しているようです。これは私のApacheインストールにどのように影響localhostし、ローカルサイトでは無視されるのですか?
ScottS

0

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

<directory>
</directory>

</VirtualHost>許可する前 に。

このようなもの

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.