Apache 서버는 IPv4를 수신하지 않지만 IPv6에서는 수신합니다.

Apache 서버는 IPv4를 수신하지 않지만 IPv6에서는 수신합니다.

RHEL Apache 서버 중 하나에서 이상한 문제가 발생했습니다.

실제로는 원격 호스트의 포트 80에서 수신 대기하고 있지 않습니다. 로컬로 탐색하면 http://localhost기본 페이지가 열립니다. 수신 대기 포트를 확인하면 인터페이스 netstat만 수신 대기 중임을 알 수 있습니다 . 항목이 없으며 해당 항목이 거기에 있어야 합니다. 예:tcp6:::80tcp

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

이 문제에 대해 많은 포럼을 검색해 보았지만 제안된 해결 방법 중 어느 것도 효과가 없었습니다. 에서는 으로 httpd.conf변경했지만 원격 호스트에서 액세스하기 위해 포트 80을 열지 않았습니다. IPtables는 처음부터 비활성화되었습니다.Listen 80Listen 0.0.0.0:80Listen 127.0.0.0:80

IPv4를 수신하도록 서버를 어떻게 설정합니까?

답변1

assiduus@localhost:~/httpd-2.4.34$ ./configure --help | grep IPv6
--enable-v4-mapped      Allow IPv6 sockets to handle IPv4 connections
assiduus@localhost:~/httpd-2.4.34$

이 기능은 소스에서 Apache httpd를 컴파일할 때 기본적으로 활성화됩니다. 배포 바이너리 패키지를 사용한 경우 분명히 이 옵션이 활성화됩니다.

답변2

다음 구성과 유사한 것을 사용하십시오.

<VirtualHost *:80>
   ServerName www.domain.com
   ServerAlias domain.com

   DocumentRoot /path/to/your/webroot/
   ...

</VirtualHost>

이것":80"을 사용하면 웹 서버가 포트 80의 모든 IP 주소를 수신할 수 있습니다.그러나 이는 새로 생성된 가상 호스트 프로필이 활성화되고 웹 서버가 다시 시작될 때까지 적용되지 않습니다.

새 가상 호스트 구성을 활성화합니다.

a2ensite domain.com.conf

웹 서버 다시 시작

service apache2 restart

웹 서버가 ipv4와 ipv6 모두에서 수신 대기하는지 확인하려면 다음을 확인하세요.

netstat -plunt |grep ":80"

이것이 도움이 된다면 알려주세요 :)

관련 정보