Apache를 단일 IP로 제한

나는 많은 IP 주소를 가진 서버를 가지고 있고, 아파치가 그중 하나를 듣고 싶어합니다. 그것은 어려운 일처럼 들리지 않으며, 얼마 전에 한 번 해봤지만 이번에는 어려움을 겪고 있습니다. 우선, 여기 내가 지금 이해하고있는 곳이 있습니다.

모든 곳에서 Apache는 포트 80을 듣고 있으며 올바른 IP에서만 듣고 있습니다.

/etc/apache2$ grep -R ":80" .
./sites-available/default:<VirtualHost 192.168.0.82:80>
./httpd.conf:<VirtualHost 192.168.0.82:80>
./ports.conf:NameVirtualHost 192.168.0.82:80
./sites-enabled/000-default:<VirtualHost 192.168.0.82:80>

0.0.0.0 청취에 대한 언급은 없습니다.

/etc/apache2$ grep -R "0\.0\.0\.0" .

그러나 … 아파치는 시작을 거부합니다.

/etc/apache2$ sudo /etc/init.d/apache2 start
 * Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
                                                                         [fail]

누군가가 묻는 경우, 나는 그 주소에 묶여 있지 않습니다.

/etc/apache2$ sudo netstat -nap | grep :80
tcp        0      0 192.168.0.83:80       0.0.0.0:*        LISTEN      2822/node

오류 로그 /var/log/apache2/error.log는 다음과 같이 말합니다.

[Wed Aug 08 03:30:18 2012] [notice] caught SIGTERM, shutting down

Apache 설정에서 한 부분을 놓쳤습니까? 내가 기억하지 못하는 것이 있습니까? 내가 기억했던 것만 큼 간단하지 않은 이유는 무엇입니까?



답변

Apache는 NameVirtualHost를 실행하기 위해 특정 IP를 지정하더라도 기본적으로 모든 것에 바인드합니다.

ports.conf에 이것을 추가하십시오 :

Listen 192.168.0.82:80

참조 : http://httpd.apache.org/docs/2.2/bind.html


답변

찾는 위치 /etc/apache2/ports.conf파일.

다음과 같은 지시문을 찾을 수 있습니다.

Listen 80

CentOS 상자에 대한 주석은이 옵션을 설명합니다.

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80

원하는대로 Listen 80줄을로 변경하십시오 Listen 192.168.0.82:80.

모든 인터페이스 (0.0.0.0 지정)에서 포트 80에 바인드하려고 시도 중이고 node192.168.0.83:80에서 청취 중이기 때문에 지금 Apache를 시작할 수 없습니다 .

가상 호스트 블록의 IP는 특정 가상 호스트가 해당 IP 주소에서 들어오는 요청에 응답 함을 의미합니다. Apache가 표시되는 인터페이스에 바인딩하는 방법을 지정하지 않습니다.


답변

Listen 지시문은 당신이 찾고있는 것입니다 :

Listen 192.168.0.82:80

설명서의 추가 정보 .


답변

Apache 문서에 따라 다음을 사용하십시오 .

들어 192.168.0.82:80

어떤 상황에서는 (모두가 아님) 조금 더 나아가서 이렇게 할 수 있습니다.

some_name_in_my_localhost 들어보기 :

그렇게하면 Apache 서버 팜이있는 상황에서 Apache 구성을 이식 가능하게 만들 수 있습니다. 이것에 대한 장단점이 있습니다 (다른 모든 것과 마찬가지로).