Apache를 단일 IP로 제한


13

나는 많은 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 설정에서 한 부분을 놓쳤습니까? 내가 기억하지 못하는 것이 있습니까? 내가 기억했던 것만 큼 간단하지 않은 이유는 무엇입니까?


1
화 나지 않았지만이 질문에 대한 최상의 답변을 어떻게 선택했는지 설명해 주시겠습니까? 선택한 답변은 다른 배포판을 참조하는 반면 내 답변은 우분투와 관련하여 발견되었습니다. 선택하지 않은 방식으로 답변을 다르게 만들 수 있습니까?
pauska

귀하의 답변에 중요한 Listen 192.168.0.82:80라인이 포함되어 있습니다. 나는 그 줄이 왜 필요한지 에 대해 조금 더 깊이 들어가기 때문에 cjc의 대답을 선택했습니다 . CentOS와 함께 제공되는 Apache 버전에서 사용 된 주석을 언급하는 것이 좋은 추가라고 생각했습니다. 그러나 모든 사람들이 대답은 파스카에 가야한다는 일반적인 동의로 보이므로, 나는 그에게 그것을주었습니다. 결국, 나는 pauska의 의견이 현재의 형태로 cjc의 답변에 크게 영향을 미친 개정판을 살펴 보았습니다.
Dan

답변:



16

찾는 위치 /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가 표시되는 인터페이스에 바인딩하는 방법을 지정하지 않습니다.


httpd.conf는 다른 스타일의 구성 파일 (많은 포함)을 사용하므로 Ubuntu에서 비어 있습니다. OP의 grep이 보여 주듯이 "Listen 80"도 없습니다.
pauska

1
아 맞다 우분투. 업데이트하겠습니다. grep기본값은대로, 어쨌든 미스 것들에 가고 그래서 80 : 그는 반대했다하고 있었다 Listen 80.
cjc

1
그 CentOS 의견은 정말 도움이 될 것입니다. 바보 우분투 ...
Dan

2

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

Listen 192.168.0.82:80

설명서의 추가 정보 .


0

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

들어 192.168.0.82:80

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

some_name_in_my_localhost 들어보기 :

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.