Làm cho apache chỉ có thể truy cập qua 127.0.0.1, điều này có thể không?


19

Tôi đã thiết lập máy chủ Apache của mình và PHP / MySQL hoạt động tốt!

Nhưng vấn đề là, làm thế nào để tôi giữ riêng tư này, vì nó là máy chủ chỉ phát triển ? Lý do duy nhất để giữ riêng tư nội dung là nếu tập lệnh bị lỗi, tôi không muốn lỗi Apache xuất hiện nếu nó trở thành trang web công khai (và thực tế là những người khác cũng chia sẻ cùng một mạng!), Và tôi ít hơn có khả năng sử dụng PC của tôi làm webhost - nhiều khả năng tôi sẽ sử dụng tuyến nhà cung cấp webhosting cho một trang web trực tiếp thực tế.

Hiện tại tôi có thể truy cập nó theo ba cách:

  • http: // localhost (hoặc http://127.0.0.1 , cách thay thế và IP của localhost nhưng một trong hai cách đều được tôi chấp nhận!)

  • http 192.168.0.1 (IP của bộ định tuyến của tôi)

  • http pc-name-here (tên PC của tôi, rõ ràng điều này khác nhau giữa các PC Windows!)

[lưu ý, không thể đăng liên kết, vì vậy đối với hai người khác, bạn phải chèn dấu gạch chéo / dấu gạch chéo như trong lần đầu tiên].

Tuy nhiên, tôi chỉ muốn truy cập nó thông qua cái đầu tiên. Nó đang nghe trên cổng 80 (và tôi không muốn thay đổi điều đó). Điều này là không thể, hoặc tôi nhầm? Tôi biết nhiều hơn một chút về PHP / webdesign so với khía cạnh mạng, vì vậy đây là lần đầu tiên đối với tôi!

Về cơ bản, tôi muốn nó chỉ có thể truy cập qua localhost trên máy đó chứ không phải địa chỉ IP bên ngoài, hoặc 192.168.0.1.

Tôi có cần chỉnh sửa httpd.conf và sử dụng từ chối trên mọi trang web được kiểm tra hay có giải pháp nào khác không?

Thí dụ:

<Directory /www/vhosts/localhost/>
    Options All
    AllowOverride All
    order allow,deny
    allow from 127.0.0.1
            deny from 192.168.0.1
            deny from my-pc-name
</Directory>
  • đó là một ví dụ nhưng tôi không chắc điều gì đúng hay sai ở đây!

Hệ điều hành của tôi là Windows 7 Ultimate.

Tôi đã có một cái nhìn quanh mạng ', nhưng một số trong đó có vẻ hơi kỹ thuật đối với tôi.

Bạn muốn giới thiệu gì?

Câu trả lời:


34

Cách dễ nhất để làm điều này là thông qua Listenchỉ thị. Theo mặc định, có một dòng trong httpd.conf của chúng tôi có nội dung:

Listen *:80

Có nghĩa là nó sẽ đáp ứng các yêu cầu ro trên cổng 80 trên tất cả các địa chỉ mạng của máy tính của bạn. Thay đổi nó thành:

Listen 127.0.0.1:80

Sẽ chỉ nói với apache để chỉ trả lời các yêu cầu trên bộ điều hợp cục bộ, do đó bỏ qua mọi thứ khác.


12

Tùy chọn nghe có lẽ là tốt nhất, nhưng cũng giống như một FYI, bạn có thể thực hiện bằng cách sử dụng allow / deny như thế này

<Directory /www/vhosts/localhost/>
    Options All
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Directory>

Order deny,allownói với Apache "Từ chối tất cả các yêu cầu trừ khi được cho phép cụ thể" ( Order allow,denyngược lại, IE cho phép tất cả các yêu cầu trừ khi bị chặn cụ thể)
Deny from allthực hiện một điều tương tự Order deny,allowở chỗ nó sẽ chặn tất cả các yêu cầu từ tất cả các IP trừ khi bạn mở chúng một cách cụ thể. Dường như đó là cách thực hành chung để sử dụng cả hai Order deny,allowDeny from allnhưng tôi không chắc chắn 100% lý do tại sao khi cả hai đều làm điều tương tự
Allow from 127.0.0.1"Cho phép tất cả các yêu cầu từ 127.0.0.1". 127.0.0.1 sẽ ánh xạ tới localhost để bạn có thể sử dụng http://127.0.0.1/ hoặc http: // localhost / và nó sẽ được cho phép

Điều đó sẽ phục vụ lỗi 403 (Bị cấm) cho bất kỳ ai yêu cầu trang web không có trên localhost

Một số công cụ hữu ích khác;
Allow from 192.168.0.sẽ cho phép yêu cầu từ bất kỳ ai trên mạng của bạn (Cung cấp mạng của bạn là 192.168.0.0-192.168.0.255) Các
quy tắc cho phép / từ chối được xử lý theo thứ tự, vì vậy

Deny from 192.168.0.2
Allow from 192.168.0.2

sẽ cho phép yêu cầu và

Allow from 192.168.0.2
Deny from 192.168.0.2

sẽ từ chối các yêu cầu từ 192.168.0.2

Vì thế

Deny from 192.168.0.2
Allow from all

Sẽ cho phép các yêu cầu từ 192.168.0.2, mặc dù nó đã bị từ chối cụ thể.

Bạn cũng có thể sử dụng quy tắc Cho phép / Từ chối trong các tệp .htaccess hoặc trên cơ sở mỗi thư mục


Bên cạnh đó là "Từ chối đơn hàng, cho phép", không phải "Cho phép đặt hàng, từ chối". Một lỗi nhỏ thường xuyên mọi người liên tục mắc phải.
Scott Chu

3

Tôi đã thực hiện các thay đổi đối với cổng.conf trong / etc / apache2 để mỗi tham chiếu đến Nghe một cổng chỉ nghe localhost. Không có tệp nào khác dường như có lệnh lắng nghe. Sau khi khởi động lại apache, những thay đổi này dường như có hiệu quả mong muốn.

/etc/apache2/ports.conf

NameVirtualHost *:80
########################## Listen 80
Listen 127.0.0.1:80

<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
###############################Listen 443
Listen 127.0.0.1:443
</IfModule>

<IfModule mod_gnutls.c>
##################################Listen 443
Listen 127.0.0.1:443
</IfModule>
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.