web-dev-qa-db-ja.com

Apache Webサーバーを2つの異なるポートでリッスンさせるにはどうすればよいですか?

自宅にインストールしたApache Webサーバーでポート80とポート8080をリッスンしたいのですが。

私は追加しました Listen 8080をhttpd.confに追加してApacheサービスを再起動しましたが、サーバーは8080をリッスンしていないようです。パンチング http:// localhost:808 がタイムアウトし、インデックスが表示されません。 htmlですが http:// localhost は私のindex.htmlを表示します。

80と8080をリッスンする方法を教えてください。

45
Owen

Apacheの標準のDebianインストールには、次の構成のフラグメントがあります。

リッスン80 
 
 <IfModule mod_ssl.c> 
#SSL名ベースの仮想ホストはまだサポートされていないため、no 
#NameVirtualHostステートメントはここにあります
 443を聞く
 </ IfModule> 

これは、mod_sslが構成されている場合、Apacheにポート80で待機し、ポート443で待機するように指示しています。あなたの場合あなたが望むでしょう:

Listen 80
Listen 8080

新しいListenディレクティブに注意を払うには、Apacheのリロード操作ではなく、必ず再起動を実行する必要があります。最も安全な方法は、Apacheを停止し、Apacheが停止していることを確認して、再度起動することです。

この構成が機能しない場合は、ログファイルでエラーメッセージを確認してください。 「netstat -lep --tcp」を使用して、ポート8080でリッスンしているものがあるかどうかを確認できます。最後に、他のすべてが機能しない場合は、straceでApacheを実行して、そのポートにバインドしようとして失敗していることを確認します。しかし、問題をログに記録しません。

64
David Pashley

これらの回答は素晴らしいですが、オーウェンhasが実際にこれをすでに行った( "Listen 8080を追加しました")可能性はありません。提案しています)。

既にこれを実行しても機能しない場合は、デフォルトのディレクティブを含めて、サブドメインごとにディレクティブを正しく構成していることを確認してください(名前の直後に:80をリッスンするように手動で構成されている場合)。

おそらく次のようなディレクティブがあります:

<VirtualHost *:80>
 ServerName michaelsanford.com
 etc…
</VirtualHost>

これを<VirtualHost *:8080>または<VirtualHost *:*>に変更する必要があります。

7
msanford

ステップ1

#vi httpd.conf
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

http_(Apache)は、ポート80でリッスンし、mod_sslが構成されている場合はポート443でリッスンします。

Listen 80
Listen 8080

ステップ2

#su - service httpd restart

ステップ3

$ netstat -lntp

(すべてのプロセスを識別できるわけではなく、所有されていないプロセス情報は表示されません。すべてを表示するにはrootである必要があります。)

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:47027               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:80              0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:8080            0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      -                   
tcp        0      0 ::ffff:127.0.0.1:45100      :::*                        LISTEN      3149/Java           
tcp        0      0 :::111                      :::*                        LISTEN      -                   
tcp        0      0 :::80                       :::*                        LISTEN      -                   
tcp        0      0 :::57173                    :::*                        LISTEN      3149/Java           
tcp        0      0 :::18197                    :::*                        LISTEN      3149/Java           
tcp        0      0 :::22                       :::*                        LISTEN      -                   
tcp        0      0 ::1:631                     :::*                        LISTEN      -                   
tcp        0      0 :::40832                    :::*                        LISTEN      3149/Java           
tcp        0      0 ::ffff:127.0.0.1:6880       :::*                        LISTEN      3149/Java       
5
Rajat

これを機能させるには、サイトにポート8080を構成する必要がある場合があります。 Apache Virtual Hosts のドキュメントを読みます。各「サイト」は、特定のポート(およびIPなど)での接続を受け入れるように設定できます。ポート80に対してのみ構成されている仮想ホストがhttp.confにありますか?

また、netstat -nlpを使用してサーバーが8080でリッスンし、そのポートでエントリを探していることを確認できます。

0
Dana the Sane

SELinuxが有効になっているかどうかを確認することもできます。デフォルトのSELinux構成では、非標準ポートでApacheを実行できない場合があります。 SELinuxを実行しているかどうか、およびその機能を使用したくない、または使用していない場合に、SELinuxを無効にする方法を示したサイトを次に示します。 http://www.crypt.gen.nz/selinux/disable_selinux.html

0
Reamer77

Linuxがnetstat -lntp rootとして、Apacheが8080をリッスンしているかどうかを確認します。これは、問題がApacheがリッスンしていないのか、Apacheの外部の要因(ファイアウォール、selinuxなど)が接続をタイムアウトにしているのかを識別するのに役立ちます。

0
Jason Tan