2012-06-28 34 views
23
  • Tôi đang sử dụng Windows 7 với máy chủ Wamp 2.2.
  • Tôi đã thiết lập 2 máy chủ ảo: www.project1.comwww.project2.com.
  • Tôi đã sửa đổi "hosts", httpd.conf và các tệp httpd-vhosts.conf, với những thay đổi mà tôi đã đề cập bên dưới.

Sử dụng trình duyệt của tôi, khi tôi gõ www.project1.com hoặc www.project2.com, tôi thành công có được trang web của tôi mở trên máy tính xách tay đã server được cài đặt trên.Truy cập máy chủ ảo từ máy khác qua mạng LAN

Những thay đổi trong "tập tin host": Tôi đã gắn các nội dung sau vào cuối file: -

127.0.0.1  localhost 
127.0.0.1  www.project2.com 
127.0.0.1  www.project1.com 

Những thay đổi trong file httpd.conf: -

Include conf/extra/httpd-vhosts.conf 

Changes trong httpd-vhosts tệp: -

NameVirtualHost *:80 

<Directory "D:/websites/"> 
    AllowOverride All 
    Order Deny,Allow 
    Allow from all 
    </Directory> 
<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/wamp/www/" 
    ServerName localhost 
</VirtualHost> 


<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 


<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/project2/" 
    ServerName www.project2.com 
</VirtualHost> 


Hiện tại; vì tôi có thể mở các trang web này từ trình duyệt trong PC_1 (trình duyệt có máy chủ), làm cách nào tôi có thể truy cập các trang web này từ trình duyệt trong PC_2? (Tôi có nghĩa là bất kỳ máy tính nào được kết nối với PC_1 qua mạng LAN.)

+0

Tôi mới làm quen với tất cả điều này và có thêm một vài câu hỏi .. 1.Là mã trên của tôi có phù hợp với những gì tôi muốn đạt được không? @Gabriel - với mã ở trên và đề xuất của bạn để thay đổi tệp máy chủ của một máy tính khác, nó sẽ mở trang mặc định wamp khi gõ www.project1.com – jatin3893

+0

Đúng, đó là cách thông thường để thực hiện việc này. Bạn cũng có thể thiết lập một số tùy chọn ServerAlias, ví dụ, nếu bạn muốn kết hợp điều này với các dịch vụ dns động. – dmp

+0

chỉ cần tham khảo liên kết này http://stackoverflow.com/questions/2530418/wamp-server-multiple-virtual-hosts-are-not-working-on-windows/17850423#17850423 tôi trả lời cho nó ... –

Trả lời

20

Trong chỉ thị virtualhost của bạn, hãy thay đổi 127.0.0.1 thành *:80 và như Gabriel đã đề cập, thêm mục nhập vào tệp máy chủ trong máy khác, thêm miền của bạn để được liên kết với IP của máy chủ.

Khi bạn đặt IP rõ ràng vào chỉ thị, apache sẽ chỉ nghe trên IP đó - nhưng ký tự đại diện sẽ cho biết nó liên kết với tất cả IP có sẵn cho nó.

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 

Nếu máy chủ của bạn nằm trên 192.168.1.70 chẳng hạn, sau đó trong các máy khác trên mạng LAN của bạn, sự xâm nhập máy chủ sẽ trông giống như:

192.168.1.70  www.project1.com 

Khởi động lại apache và nó sẽ hoạt động tốt. Lưu ý, khi bạn đang sử dụng máy chủ ảo, apache sẽ sử dụng định nghĩa đầu tiên làm mặc định khi không thể thực hiện khớp giữa tên miền được chuyển trong tiêu đề yêu cầu HTTP và thiết lập trang trong cấu hình, là lý do khiến trang mặc định của bạn xuất hiện.

Bạn đã yêu cầu apache liên kết với tất cả IP bằng chỉ thị NameVirtualHost *:80, nhưng sau đó không thiết lập trang web cho IP bên ngoài đó. Hy vọng rằng sẽ giúp!

+0

Làm thế nào để bạn có thể sử dụng nó để bạn có thể sử dụng ipaddress/virtualhostname từ bất kỳ máy LAN nào, mà không cần chỉnh sửa các máy chủ truy cập? – dibs

+0

Điều gì xảy ra nếu bạn muốn kiểm tra điều này từ iPhone chẳng hạn? Có cách nào khác hơn là thay đổi tệp máy chủ không? – Victor

0

Bạn cần thay đổi tệp máy chủ trên máy mà bạn đang cố gắng xem trang.

Vì vậy, bạn cần thêm chúng vào tệp lưu trữ trên máy lan khác.

+0

với mã trên và đề xuất của bạn để thay đổi tệp máy chủ của một máy tính khác, nó sẽ mở trang mặc định wamp khi gõ www.project1.com Làm cách nào để tôi truy cập trang chỉ mục của www.project1 .com? – jatin3893

5

Có hai máy tính trong mạng cục bộ.

Máy tính (192.168.1.70) Setup (D: \ wamp \ bin \ apache \ Apache2.2.11 \ conf \ thêm \ httpd-vhosts.conf):

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project2/" 
    ServerName www.project2.com 
</VirtualHost> 

B cài đặt máy tính (c:/windows/system32/ổ đĩa/etc/máy chủ):

192.168.1.70 www.project1.com 
192.168.1.70 www.project2.com 

B truy cập A, Dự án của tôi đang hoạt động.

19

Ngoài câu trả lời của danp, bạn có thể truy cập máy chủ ảo mà không phải thay đổi tệp máy chủ lưu trữ của máy khách bằng cách gán cổng cho máy chủ ảo. Đây là lý tưởng nếu bạn muốn truy cập vào máy chủ với một thiết bị di động hoặc máy tính bảng:

  1. tập tin httpd.conf Sửa máy chủ tại địa chỉ:

    \wamp\bin\apache\apache2.2.x\conf\httpd.conf 
    

    Tìm kiếm "Listen" (khoảng dòng 61). Bạn sẽ thấy những điều sau đây cho phép Apache để lắng nghe cho cổng 80:

    Listen 0.0.0.0:80 
    Listen [::0]:80 
    

    Thêm các dòng sau để thêm lắng nghe cổng 81 (hoặc bất kỳ cổng):

    Listen 0.0.0.0:81 
    Listen [::0]:81 
    
  2. Chỉnh sửa các tập tin httpd-vhosts.conf tại địa chỉ:

    \wamp\bin\apache\apache2.2.x\conf\extra\httpd-vhosts.conf 
    

    Thay đổi "Virtual host" thẻ của bạn để cổng 81:

    <VirtualHost *:81> 
        DocumentRoot "D:/websites/project1/" 
        ServerName www.project1.com 
    </VirtualHost> 
    
  3. Khởi động lại máy chủ Apache.

  4. Trên máy client/tablet/điện thoại di động, trên trình duyệt web, nhập địa chỉ của máy chủ IP (192.168.0.10, hoặc bất cứ điều gì chỉ IP) tiếp theo là số cổng theo định dạng sau:

    http://192.168.0.10:81 
    
+0

Tuyệt vời, tôi sẽ chỉ thêm vào cửa sổ bạn có thể cần phải mở cổng 81 cho wamp (quy tắc gửi) trong tường lửa –

+0

Tôi cũng gắn bó với cổng. Nếu chỉ có một cách, để làm cho một cửa sổ máy được biết đến trong mạng LAN địa phương dưới tên máy chủ (hoặc trong một số thiết lập DNS router hoặc ở nơi khác), sẽ thanh lịch hơn ... –

+1

Giải pháp tuyệt vời trên tất cả các thiết bị. Killer giải pháp :) Thử nghiệm và chứng minh. Cảm ơn – ColinWa

2

Một vài điểm cập nhật để xem xét cho câu trả lời chọn:

  1. NameVirtualHost không còn được sử dụng sau khi phiên bản Apache 2.3.11 và có thể bỏ qua.

    Trong 2.3.11 và sau đó, bất cứ khi nào địa chỉ IP và cổng kết hợp là sử dụng trong nhiều máy ảo, tên dựa trên lưu trữ ảo được tự động kích hoạt cho địa chỉ đó.

  2. Bởi vì chúng ta đang nói về việc lưu trữ một trang web trên mạng LAN, chúng ta hãy thiết lập một yêu cầu * để chỉ chấp nhận kết nối từ địa chỉ IP trong mạng nội bộ của bạn. Ví dụ: trên bộ định tuyến Linksys thông thường, IP mặc định được gán cho từng thiết bị trên mạng nằm trong khoảng từ 192.168.1.100 đến 192.168.1.255.Bạn có thể cho phép kết nối từ tất cả các thiết bị trên mạng LAN với địa chỉ IP 192.168.1.XXX bằng cách sử dụng Require ip 192.168.1 (thông báo octet cuối cùng được tắt khỏi IP để cho phép toàn bộ phạm vi ).

    Điều này cho phép bạn định cấu hình quyền truy cập cho mỗi dự án để có thể là khả dụng qua mạng LAN và một mạng khác chỉ khả dụng tại địa phương.

    # This will allow all LAN connections to www.project1.com 
    <VirtualHost *:80> 
        DocumentRoot "D:/websites/project1/" 
        <Directory "D:/websites/project1/"> 
         Require local 
         Require ip 192.168.1 
        </Directory> 
        ServerName www.project1.com 
    </VirtualHost> 
    
    # This will allow only the machine hosting the website to access www.project2.com 
    <VirtualHost *:80> 
        DocumentRoot "D:/websites/project2/" 
        <Directory "D:/websites/project2/"> 
         Require local 
        </Directory> 
        ServerName www.project2.com 
    </VirtualHost> 
    

    Mặc dù trang web của bạn sẽ không được phân phối công khai mà không có bộ định tuyến chuyển tiếp trên cổng 80 đến máy chủ của bạn, tôi cho rằng đây được xem là phương pháp hay nhất. Nó đặc biệt cần thiết nếu bạn cần kiểm soát những dự án nào có sẵn cho các thiết bị trên mạng LAN.

  3. Lời nhắc: Máy chủ lưu trữ của bạn phải được định cấu hình để sử dụng địa chỉ IP tĩnh thay vì được chỉ định bởi DHCP của bộ định tuyến. Vì chúng tôi đang chỉnh sửa tệp máy chủ của các thiết bị khác để trỏ đến IP của máy chủ, , chúng tôi không muốn nó thay đổi.

* Tôi kể cả điều này bởi vì người ta thường có những hạn chế truy cập vào một máy chủ phát triển địa phương và bạn sẽ cần phải đặc biệt làm cho nó có sẵn cho mạng cục bộ.

Các vấn đề liên quan