Microsoft 社는 2022년 6월 15일 Internet Explorer 11의 지원을 종료했습니다.

Apache httpd 의 Listen 지시어 등에서 사용하는 Address

제목

Apache httpd 의 Listen 지시어 등에서 사용하는 Address

Apache httpd 의 httpd.conf (혹은 apache2.conf 에서 include 하는 ports.conf) 에서 80 포트를 여는 기본 설정은 다음과 같다.

Listen 80

위와 같이 하면, 모든 네트워크 인터페이스에서 연결을 받게 되고, 다음과 같이 설정을 해도 마찬가지이다.

Listen *:80

ipv4에서 다음과 같다.

Listen 0.0.0.0:80

ipv6에서 다음과 같다.

Listen :::80

포트가 열려 있는지 확인하는 명령어는 다음과 같다.

sudo ss -nlt

혹은

sudo netstat -nlt

운영체제에 따라 실행결과가 다를 수 있지만, "Local Address:Port" 혹은 "Local Address" 는 0.0.0.0:80 혹은 *:80, ipv6 의 경우에는 :::80 와 같이 표시된다.

Listen 지시어를 변경하고 sudo ./apachectl restart 를 하면 Apache httpd 가 다시 살아나지 않으므로 다음과 같이 해야 한다.

sudo ./apachectl stop
sudo ./apachectl start

VirtualHost 설정은 다음과 같은 방식으로 할 수 있다.

<VirtualHost 0.0.0.0:80>
<VirtualHost *:80>
<VirtualHost :::80>

다음과 같은 VirtualHost 설정은 구문 에러가 발생한다.

<VirtualHost 80>

eth0 과 같이 특정 네트워크 인터페이스에 할당된 ip (192.168.0.2 라고 가정한다)에 대해서만 연결을 허용하는 설정은 다음과 같다.

Listen 192.168.0.2:80
<VirtualHost 192.168.0.2:80>

이 경우 localhost 혹은 127.0.0.1 로 들어오는 연결은 거부된다.

만약, 다음과 같이 한다면,

Listen 80
<VirtualHost 192.168.0.2:80>

localhost 혹은 127.0.0.1 들어오는 연결은 VirtualHost 로 연결되지 않을 것이다.

Listen 과 VirtualHost 가 서로 짝이 맞지 않으면, 어떤 순간에 한참동안 삽질을 해야 하는 불상사가 생긴다.

만약, 다음과 같이 한다면,

Listen 127.0.0.1:80
<VirtualHost 127.0.0.1:80>

외부에서 들어오는 연결을 받을 수 없다.

127.0.0.1localhost 로 변경하거나, 다음과 같이 ipv6 의 loopback 표기인 ```::1```` 로 변경해도 외부에서 들어오는 연결을 받을 수 없다.

Listen ::1:80
<VirtualHost ::1:80>

Apache httpd 는 Listen 과 VirtualHost 를 ipv6 인 :::80 으로 설정해도 문제가 되지 않고, telnet localhost 80 으로도 접속할 수 있다.

/etc/hosts 에서 ::1 를 localhost 에 매칭시키고 있지 않다면, Listen 과 VirtualHost 를 ipv6 의 loopback 표기인 ::1:80 으로 설정했다면, telnet ::1 80 으로는 접속 할 수 있지만, telnet localhost 80 이나 curl --ipv6 http://localhost 으로는 접속할 수 없다.

Apache Tomcat 의 server.xml 에서 <Connector> 의 address 속성 값을 ::1 로 하면, Apache httpd 쪽에서 localhost 대신 [::1] 로 기재해야 한다.

제목

첨부파일