Giới hạn Apache ở một IP duy nhất


13

Tôi đã có một máy chủ với một loạt các địa chỉ IP và tôi chỉ muốn Apache nghe trên một trong số đó. Nghe có vẻ không phải là một việc khó làm và tôi đã từng làm điều đó một lần trước đây, nhưng lần này tôi gặp một số rắc rối. Trước hết, đây là nơi tôi đang ở hiện tại, theo sự hiểu biết của tôi:

Mọi nơi Apache đều nghe cổng 80, nó chỉ nghe đúng 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>

Không có đề cập đến việc nghe trên 0.0.0.0.

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

Vậy mà ... Apache từ chối bắt đầu.

/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]

Trong trường hợp ai đó hỏi, tôi không bị ràng buộc với địa chỉ đó:

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

Nhật ký lỗi tại /var/log/apache2/error.logchỉ nói:

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

Tôi đã bỏ lỡ một vị trí trong cấu hình của Apache? Có điều gì tôi không nhớ để tìm kiếm? Tại sao điều này không đơn giản như tôi nhớ nó?


1
Tôi không bị xúc phạm hay bất cứ điều gì, nhưng bạn có thể vui lòng giải thích cách bạn chọn câu trả lời hay nhất cho câu hỏi này không? Câu trả lời bạn đã chọn là tham khảo một bản phân phối khác, trong khi câu trả lời của tôi là tại chỗ liên quan đến Ubuntu. Tôi có thể làm cho câu trả lời của mình khác đi theo bất kỳ cách nào vì bạn đã không chọn nó không?
pauseka

Cả hai câu trả lời của bạn đều chứa Listen 192.168.0.82:80dòng quan trọng , đó là điều tôi cần. Tôi đã chọn câu trả lời của cjc vì nó đi sâu hơn một chút về lý do tại sao dòng đó là cần thiết. Tôi nghĩ rằng việc đề cập đến các bình luận được sử dụng trong phiên bản Apache đi kèm với CentOS là một bổ sung hay. Nhưng vì mọi người dường như đều đồng ý rằng câu trả lời nên được đưa ra cho halka, tôi đã đi trước và đưa nó cho anh ta. Rốt cuộc, tôi nhận thấy bằng cách xem xét các sửa đổi mà bình luận của halka đã ảnh hưởng đáng kể đến câu trả lời của cjc ở dạng hiện tại.
Dan

Câu trả lời:



16

Nhìn vào /etc/apache2/ports.conftập tin.

Bạn sẽ tìm thấy một chỉ thị như:

Listen 80

Nhận xét về các hộp CentOS mô tả tùy chọn này:

#
# 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

Đối với những gì bạn muốn, thay đổi Listen 80dòng thành Listen 192.168.0.82:80.

Bạn không thể khởi động Apache ngay bây giờ vì nó đang cố liên kết với cổng 80 trên tất cả các giao diện (ký hiệu 0.0.0.0) và bạn đã nodenghe trên 192.168.0.83:80.

IP trong các khối máy chủ ảo có nghĩa là máy chủ ảo cụ thể đó sẽ đáp ứng các yêu cầu đến trên địa chỉ IP đó. Nó không xác định cách Apache sẽ liên kết với các giao diện mà nó nhìn thấy.


Httpd.conf trống trên Ubuntu, vì chúng sử dụng một kiểu tệp cấu hình khác (bao gồm rất nhiều). Không có bất kỳ "Nghe 80" nào, như các grep từ OP đã hiển thị.
pauseka

1
Ô đúng rồi. Ubuntu. Tôi sẽ cập nhật. Các grepông đã làm là chống lại: 80 nên nó sẽ đi những chỗ bỏ lỡ dù sao, như mặc định là Listen 80.
cjc

1
Nhận xét đó của CentOS thực sự sẽ giúp tôi hiểu. Ubuntu ngớ ngẩn ...
Dan

2

Nghe chỉ thị là những gì bạn đang tìm kiếm:

Listen 192.168.0.82:80

Thêm thông tin trong tài liệu .


0

Sử dụng các mục sau theo tài liệu Apache :

Nghe 192.168.0.82:80

Trong một số trường hợp (không phải tất cả), người ta có thể đi xa hơn một chút và làm điều này:

Nghe some_name_in_my_localhost: 80

Bằng cách đó, bạn có thể cấu hình apache của mình di động trong các tình huống khi bạn có cụm máy chủ Apache. Có những ưu và nhược điểm này (giống như với mọi thứ khác.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.