Accessing virtual host from computer on same local

2019-03-08 09:24发布

问题:

I am trying to make a setup so that I can access my website on a virtual host in computer A from computer B. Both A and B are on the same network. I am using xampp on Win 7.

So here is as the problem goes computer A(server) has a virtual host configuration as follows in the httpd-vhosts.conf file.

NameVirtualHost project:81

<VirtualHost project:81>

    DocumentRoot "D:/work/website"
    ServerName project:81
    <Directory "D:/work/website">
    Options Indexes FollowSymLinks Includes ExecCGI    
    AllowOverride All
    Order Allow,Deny
    Allow from all
    </Directory>
</VirtualHost>

(using port 81 as port 80 has IIS running, dont know much about these things however)

this configuration works fine on the local machine(server). i.e project:81 in the address bar of the browser opens up the website as it should.

Now on computer B(client) I changed the hosts file to contain the IP of the server along with the name of the virtual host like:-

192.168.1.7 project

now when I enter project:81 on the client browser .. it takes me to the server but its not taking me to the virtual host directory, instead it takes to the default directory .. i.e in my case is

C:\xampp\htdocs

Now I am stuck and unable to make the client to point to the current destination. So can anybody suggest what I am doing wrong here or something else I need to do in order to have access to the correct virtual host site from the client machine.

Thanks in advance for any help

回答1:

Ok So Seto El Kahfi's reply to my very old question led me to do some more research and reading on Apache's website.

So what I got is this, my NameVirtualHost directive was improper. So Instead of this,

NameVirtualHost project:81

<VirtualHost project:81>

    DocumentRoot "D:/work/website"
    ServerName project:81
    <Directory "D:/work/website">
    Options Indexes FollowSymLinks Includes ExecCGI    
    AllowOverride All
    Order Allow,Deny
    Allow from all
    </Directory>
</VirtualHost>

What I had to do was this.

NameVirtualHost *:81

<VirtualHost *:81>

    DocumentRoot "D:/work/website"
    ServerName project
    <Directory "D:/work/website">
    Options Indexes FollowSymLinks Includes ExecCGI    
    AllowOverride All
    Order Allow,Deny
    Allow from all
    </Directory>
</VirtualHost>

Notice the ' * ' , I could have used an IP Address there too.(In this case my server's(machine A) local IP) both work. Now all I had to do is enter "project:81" on the client machine, and I get what my eyes wished to see.. :)

Few things I got from this.

1) How to use NameVirtualHost(or what it's purpose basically is.). Read More here http://httpd.apache.org/docs/2.2/mod/core.html#namevirtualhost This one is also good http://www.thegeekstuff.com/2011/07/apache-virtual-host/

2)You can use this via command line:

httpd -D DUMP_VHOSTS

to know how your virtual hosts are setup(will also give you some warnings regarding precedence if something's wrong with your setup)

3)Other's gesture to help you makes you help yourself.. :) So keeping helping and rocking.



回答2:

Have you try to include the port at your client host's file?

192.168.1.7:81 project