web-dev-qa-db-ja.com

Apache 2.4仮想ホストの接続拒否

Mac OS XでApache 2.4を実行しています。_apachectl configtest_を使用してください:構文OK。

私は2つの仮想ホストをセットアップしました。1つはlocalhost、もう1つはtest.devです。

_<VirtualHost *:80>
    DocumentRoot "/Users/psychomachine/Development/_localhost"
    ServerName localhost
    ServerAlias www.localhost
    <Directory />
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/psychomachine/Development/test"
    ServerName test.dev
    ServerAlias www.test.dev
    <Directory />
        Require all granted
    </Directory>
</VirtualHost>
_

localhostが機能するだけです。

_↪ curl -I -L localhost                                                                                                                                                              15:51:08
HTTP/1.1 200 OK
Date: Tue, 08 Dec 2015 14:51:17 GMT
Server: Apache/2.4.16 (Unix)
Last-Modified: Tue, 08 Dec 2015 08:52:04 GMT
ETag: "c-5265f1673f500"
Accept-Ranges: bytes
Content-Length: 12
Content-Type: text/html
_

一方、test.devは次のことを行いません。

_↪ curl -I -L test.dev                                                                                                                                                               15:51:01
curl: (7) Failed to connect to test.dev port 80: Connection refused
_

私のホストファイルにはtest.devのエントリがあります。そのため、test.devにpingを送信し、127.0.0.1から返信を受け取ることができます。

_↪ ping test.dev                                                                                                                                                                     15:53:39
PING test.dev (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.069 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.096 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.111 ms
^C
--- test.dev ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.069/0.092/0.111/0.017 ms
_

私はこれを見て何時間も費やしましたが、test.devにpingを実行する方法がまだわかりませんが、それでも接続が拒否されます。 Apacheはポート80をリッスンしており、ページ禁止の種類のエラーは発生しません。 test.devのリクエストはApacheに到達しないため、test.devのApacheログには何もありません。

パズルの重要な要素が欠けています。誰かが私を正しい方向に向けてくれることを願っています。

よろしくお願いします。

編集:言ったように、Apacheは80をリッスンしています。

_Sudo lsof -i ':80'                                                                                                                                                                16:54:46
COMMAND  PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
httpd   2464   root    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2466 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2467 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2468 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2469 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2470 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
_

追加情報

_scutil -r test.dev                                                    08:25:59
Reachable 

telnet test.dev                                                       08:26:17
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote Host

telnet test.dev 80                                                    08:26:43
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote Host
_

_127.0.0.1 test.dev_は_/etc/hosts_にあり、_Listen *:80_はApacheのconfにあります。

10
Tench

Apacheがポート80をリッスンしていたにもかかわらず、このポートは接続を拒否していました。最後にこれは私のために働いたものです:

私はポート80がすべてのインターフェイスでTCP=に対して開いていることを確認しました。OSXでは、次のように追加します。

pass in proto tcp from any to any port 80

/etc/pf.conf。 pfctlをリロードしても問題は解決しませんでしたが、再起動ではできました。これで、すべての仮想ホストにアクセスできるようになりました。そして世界は再び整然としている。

4
Tench

あなたをチェック httpd.confを使用して、次のことを確認します。

Listen 127.0.0.1:80

あなたはそれを次のものと置き換える必要があります:

Listen *:80

これにより、Apacheはloopbackインターフェースだけでなく、コンピューターのすべてのインターフェースにバインドします。

編集後、Apacheを再起動することを忘れないでくださいhttpd.conf

4
Inigo Flores

Test.devを、httpまたはhttps通信用の別の使用可能なポートに接続してみてください。 ORポート ':80'で以前のPIDを停止してから実行します。プロセスIDを確認するには-

netstat -ltnp | grep ':80'

-9を殺す

1
Mohit Rohilla