Windows 7コンピューターにApacheサーバーをインストールしました。ブラウザのアドレス行に http:// localhost / と入力すると、デフォルトのindex.phpを表示できました。
ただし、自分のコンピューターのIPアドレスを入力しても(ローカルでは(同じコンピューターから)、グローバルではなく(インターネットに接続された別のコンピューターから))、このページを表示できません。
ポート80を開く必要があると言われました。( ここ の方法で)行いましたが、問題は解決しませんでした。
まず、開いているポートと開いていないポートを確認します。たとえば、開こうとする前にポート80が閉じられたかどうかはわかりません。開こうとしたのですが、開封されているかわかりません。
Pythonで書かれた非常にシンプルなWebサーバーを実行しようとしました。そのために私はポート81を使用し、それはうまくいきました!ポート81を開こうとはしませんでした。そのため、デフォルトでポートが開かれました。では、81がデフォルトで開かれているのに、なぜ80が開かれていないのでしょうか。それともそうですか?
追加情報:
1。私のhttpd.confファイルには「Listen 80」があります。
2。 このサイト は、コンピュータのポート80が開いていることを通知します。
3。 http:// myip:8 と http:// myip:81 を試した場合、異なる応答が返されます。最後のケースでは、ブラウザ(Chrome)がリンクが壊れていると書いています。最初のケースでは、次のようになります:Forbiddenこのサーバーにアクセスする権限がありません。
4。 IEは、「ウェブサイトはこのウェブページの表示を拒否しました」と書いています。
外部からポートをスポットチェックするだけの場合。このツールを使用してください:
http://www.yougetsignal.com/tools/open-ports/
特定のポートでIPアドレスへの接続を試み、外部に対して開いているか閉じているかを通知します。
地元の問題も? Windows 7のファイアウォールがあなたを遮断しているように聞こえます。このチュートリアルで例外を追加...
http://www.sevenforums.com/tutorials/542-windows-firewall-add-remove-exception.html
コマンドプロンプトからnetstat -a -n
またはss -a -n
を実行すると、開いているすべてのネットワーク接続とマシンのリスニングポートが表示されます。 0.0.0.0:80
は、すべてのIPアドレス(ローカルホストとパブリック/プライベートIPアドレス)のポート80
でリッスンしていることを意味します。127.0.0.1:80
は、ローカルホストでのみリッスンしていることを意味します。コマンドに-b
を追加すると、そのポートを使用している実行可能ファイルが表示されます。 Windows 7のリソースモニターを使用して、[ネットワーク]タブの[リスニングポート]セクションで同じ情報を取得できます。
別のサーバーから開いているかどうかを確認する場合は、telnet serverName 80
とセッションが開くかどうかを確認します。そうでない場合は、サーバーが待機していないか、ポートがファイアウォールによってブロックされています。
それが開いてすぐに閉じる場合、少なくともWindows 2003では、ソフトウェア(Exchangeなど)はその特定のインターフェースまたはIPをリッスンするように構成されていない可能性がありますが、他のポートでリッスンしています。私はIISが愚かなのでこのように振る舞うのを見ました、Apacheはそうではないかもしれません。
あなたが書いた:
最初のケースでは、次のエラーが発生します:Forbiddenこのサーバーにアクセスする権限がありません。
これは奇妙に聞こえるかもしれませんが、実際には開いていないポートでは問題があります(ただし、Apache構成で)。
その「禁止」メッセージは、Apacheサーバーから送信されます。それはあなたのウェブサーバーがインターネットからアクセス可能であることを意味します。
すべてのホストにサービスを提供できるようにApacheを設定する必要があります-そうしないと、「禁止」ページが表示されます。 IIRC、Apacheは最初、ローカルコンピュータからのリクエストのみを許可するように設定されています。
Apache設定のどこかに、おそらくこのようなセクションがあります(実際のディレクトリは異なる場合があります)。
<Directory "/home/piskvor/www">
Allow from 127.0.0.1
Deny from all
(...)
どのコンピューターにもページを表示させたい場合は、Deny from all
をAllow from all
に変更する必要があります。 詳細については、アクセスモジュールのドキュメントを参照してください 。
開いているポートを表示するには、nmapを使用する必要があります。それらにはWindowsバージョンがあります。 http://nmap.org/dist/nmap-5.21-setup.exe
Localhostからポート80が開いているのを確認するだけでは十分ではありません。他の場所から試すと、何か邪魔になる可能性があります。そのため、nmapをお勧めします
クライアントから次のように入力します:nmap ip-of-your-server
ローカルネットワークでこれをテストする場合は、ダウンロードしてください nmap ポートが外部からアクセスできる天気を確認したい場合は、スキャンを実行してください https://www.grc .com/x/ne.dll?bh0bkyd2
コマンドプロンプトから:
netstat -ano, look for 0.0.0.0:80
...またはIP:80。これにより、マシンでポート80が開いているかどうかがわかります。ネットワークの外部からアクセスできるかどうかを確認したい場合は、ファイアウォールが設置されているかどうかを判断します。その場合、ポート80をWebサーバーに転送する必要があります。
サーバーポートは、単一のIPアドレスまたは使用可能なすべてのIPアドレスにバインドできます。 Apacheインストールが127.0.0.1にのみバインドするように設定されているようですが、*にバインドするように設定する必要があります。 httpd.conf(Apacheのconfディレクトリ内)で、Listen localhost:80
のような行を探し、Listen 80
に変更します。
Windowsを使用している場合は、 SysInternals TCPView を使用します。どのプログラムがどのポートを使用しているかがわかります。
telnet <Host> <port>
あなたの友だちです。世界中のほとんどすべてのコンピュータにインストールできるというメリットがあります。
質問を再度読んだ後の編集:
ここにいくつかの有用な診断のヒントがあります
localhostを介してサイトにアクセスできるが、ネットワーク上の他のホストからのサイトローカルIP(192.168。*)を介してアクセスできない場合は、おそらくWindowsファイアウォールの問題です。
他のサイトローカルマシンからはサイトにアクセスできても、インターネットからパブリックIPにアクセスできない場合は、ルーター/ポート転送の構成の問題です。