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


45

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

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

80および8080をリッスンさせるにはどうすればよいですか?


なぜポート8080でリッスンしていないと思いますか?また、構成のスニペットを投稿すると役立つ場合があります。
デビッドZ

1
http.confの編集後にApacheを再起動しましたか?
ダナ正気

@David 8080でリッスンしていないと思う理由を示すために質問を更新しました。現時点ではhttpd.confにアクセスできません。@Dana-はい。
オーウェン

回答:


63

Apacheの標準Debianインストールには、次の設定のフラグメントが含まれます。

聞く80

<IfModule mod_ssl.c>
    #SSL名ベースの仮想ホストはまだサポートされていないため、
    #NameVirtualHostステートメントはこちら
    聞く443
</ IfModule>

これは、mod_sslが設定されている場合、ポート80でリッスンし、ポート443でリッスンするようApacheに指示しています。あなたの場合、あなたは望むでしょう:

Listen 80
Listen 8080

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

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


1
Apache 2.4では、この構成フラグメントはどこにありますか?ありがとう。
ルイスデスーサ

2
自分の質問に答える:/etc/apache2/ports.conf
ルイスデスーサ

7

これらの答えは素晴らしいですが、オーウェン実際にすでにこれを行っている可能性(「私は追加しましたListen 8080」)を除外します。

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

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

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

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


これが私の問題だと思う。<VirtualHost *:80>ディレクティブがあると思います。これを確認する必要があります。
オーウェン

1
仮想ホストがない場合は、グローバルDocumentRootからコンテンツが提供されます。これにより、標準のindex.html、ディレクトリインデックスページ、404または403エラーが表示される可能性があります。タイムアウトしません。
デビッドパシュリー

2
静かにパケットをドロップしているファイアウォールが設置されているように聞こえます。
msanford 2009年

結局のところ、それはファイアウォールの問題でした。
オーウェン

5

ステップ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>

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

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       

0

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


または、SELinuxをオンのままにしておくこともできます。最新のSELinuxシステムを使用している場合は、ポートにsemanage port -lというラベルが付いていることを確認してください。「apacheデーモンに別のポートでリッスンさせたいが、SELinuxがそれを妨げている」というタイトルのdanwalsh.livejournal.com/9275.htmlを参照してください。
REV

0

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

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


1
いいえ、これは正しくありません。Apacheがポートでリッスンするようにするには、Listenディレクティブを使用する必要があります。
デビッドパシュリー


1
まあ、それはいくらか正しいかもしれません-多くの人が<VirtualHost *:80>のようなvhostを作成します。その場合、それを<VirtualHost *:*>に変更するか、ポート8080の別のvhostを作成する必要があります。リッスンディレクティブも必要です)
デイビッドZ

@David Pashley、著者はListenディレクティブが既に追加されていると述べました。
ダナ正気

0

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

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