Apache2가 IPv4 TCP 포트에서 실행되지 않습니다 the VirtualHost statement

데비안 7 서버에서 Apache2를 실행해야합니다. 그러나 tcpv4 포트가 아닌 tcpv6 포트에서만 실행됩니다. apt-get install로 설치했습니다. localhost 또는 127.0.0.1 또는 내 서버 IPv4 주소로 이동하면 웹 사이트가 표시되지 않습니다.

/etc/apache2/ports.conf:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
 # If you add NameVirtualHost *:443 here, you will also have to change
 # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
 # to <VirtualHost *:443>
 # Server Name Indication for SSL named virtual hosts is currently not
 # supported by MSIE on Windows XP.
 Listen 443
</IfModule>

<IfModule mod_gnutls.c>
 Listen 443
</IfModule>

netstat -plntu:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3558/sshd
tcp        0      0 0.0.0.0:3466            0.0.0.0:*               LISTEN      2820/mysqld
tcp6       0      0 :::80                   :::*                    LISTEN      2097/apache2
tcp6       0      0 :::22                   :::*                    LISTEN      3558/sshd



답변

netstat가 여기에 tcp6 만 표시한다는 사실은 문제가 아닙니다. 수신 할 주소를 지정하지 않으면 apache는 단일 소켓을 사용하여 지원되는 모든 주소 계열을 청취합니다 (설계상의 이유로 sshd는 주소 및 주소 계열마다 고유 한 소켓을 사용하므로 netstat 출력에 두 번 표시됨).

내 시스템 중 하나는 아파치가 tcp6 소켓 만 가지고 있지만 여전히 IPv4와 IPv6을 통해 정상적으로 작동한다는 것을 보여줍니다.

woodpecker ~ # netstat -anp |grep apache
tcp6       0      0 :::80    :::*       LISTEN      1637/apache2
tcp6       0      0 :::443   :::*       LISTEN      1637/apache2
woodpecker ~ # wget http://127.0.0.1/ -O /dev/null
--2013-12-25 08:52:38--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...
# wget http://[::1]/ -O /dev/null
--2013-12-25 08:53:00--  http://[::1]/
Connecting to [::1]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...

wget http://127.0.0.1/ -O -서버에서 실행 하면 어떻게됩니까? 성공적으로 연결 되었습니까? 예상대로 웹 사이트의 원시 HTML을 반환합니까?


답변

IPV4 연결 만 처리합니다.

Listen 0.0.0.0:80
Listen 192.0.2.1:80

https://httpd.apache.org/docs/2.2/bind.html#ipv6


답변

  1. 127.0.0.1은 머신에만 로컬이므로 로컬 루프백 ip / address를 사용하려면 브라우저 자체에서 서버 자체에 있어야합니다.

  2. 방화벽 차단 포트가있을 수 있습니다.

  3. 아파치가 실행 중이고 제대로 작동하는지 확인하고 오류 로그를 확인하십시오.

  4. 모든 아파치 설정을 다시 확인하십시오.

  5. 루트 www 또는 사용자 public_html 디렉토리에서 호스팅하고 있습니까?

  6. 소유자 및 권한을 다시 확인하십시오.


거의 2019 년 (미래에 오신 것을 환영합니다) :

  • 기본적으로 대부분의 세계는 ipv6을 사용하고 실패하면 ipv4로 대체됩니다.

  • 이제 ipv6을 통한 ipv4 터널이 있으며 그 반대도 마찬가지입니다.

  • 대부분의 OS, 프로그램, 클라이언트 및 서버는 대부분 현재이 작업을 수행합니다.

  • 더 이상 NAT가없는 세상에 오신 것을 환영합니다. 이제 장치에 방화벽 / 필터를 사용해야합니다.

  • ipv4와 ipv6을 동시에 지원하여 시스템을 모두 이중 스택으로 유지하는 것이 좋습니다. 따라서 매직 스위치가 발생할 때 여전히 작동합니다. 내 OS, 네트워크, 심지어 ISP도 듀얼 스택 엔드 투 엔드입니다. 원하는 경우 ipv4를 완전히 끌 수 있지만 ipv4에서 ipv6으로 돌아가는 터널이 없으면 더 이상 작동하지 않을 수 있습니다.


답변

*

wget http://127.0.0.1/ -O / dev / null

*는 IPv4 또는 IPv6을 처리하지 않고 로컬 서버에 대한 연결을 나타냅니다. localhost (또는 127.0.0.1)를이 서버의 실제 IPv4 IP 주소로 변경하면 연결이 거부되어 아무 것도 얻을 수 없습니다.

구성 파일에서 IP를 설명하십시오. NameVirtualHost : 80 Listen : 80


답변