如何使用ip访问为多个站点配置的wamp中的不同站点

时间:2014-06-18 12:51:58

标签: networking ip localhost wamp wampserver

我使用wamp在本地开发,并且我已经配置环境来处理多个站点,但我想使用ip地址访问特定站点,我不知道是否我必须在127.0.0.1之后添加一个端口。

以下是我的主机设置。

127.0.0.1       localhost
127.0.0.1       www.site1.net
127.0.0.1       www.site3.com

和vhosts。

<VirtualHost *:80>
    ServerAdmin www.site1.net
    DocumentRoot "c:/wamp/site1/"
    ServerName www.site1.net
    ServerAlias www.site1.net
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin www.site2.com
    DocumentRoot "c:/wamp/site2/"
    ServerName www.site2.com
    ServerAlias www.site2.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>

问题

当我将127.0.0.1放入我的地址栏时,它会转到site1,我不知道如何使用ip访问site2。

为什么我要这个。 因为当我尝试从同一网络上的另一台设备访问这些网站时,除非我在iphone上使用这个ip:172.20.10.4这个,否则这个ip会转到localhost,这是site1然后我可以& #39;访问site2。

但只有www.site.net或www.site2.com才能在运行wamp的机器上运行。

修改。这是尝试过的。

我把一些端口放在&#39; listen&#39; httpd.confi;

的一部分
Listen *:80
Listen *:8182
Listen *:8383

并更改了htttpd-vhosts;

<VirtualHost *:80>
        ServerAdmin localhost
        DocumentRoot "c:/wamp/"
        ServerName localhost
        ServerAlias localhost
        ErrorLog "logs/dummy-host.example.com-error.log"
        CustomLog "logs/dummy-host.example.com-access.log" common
    </VirtualHost>
<VirtualHost *:8181>
        ServerAdmin www.site1.net
        DocumentRoot "c:/wamp/site1/"
        ServerName www.site1.net
        ServerAlias www.site1.net
        ErrorLog "logs/dummy-host.example.com-error.log"
        CustomLog "logs/dummy-host.example.com-access.log" common
    </VirtualHost>
<VirtualHost *:8182>
        ServerAdmin www.site2.com
        DocumentRoot "c:/wamp/site2/"
        ServerName www.site2.com
        ServerAlias www.site2.com
        ErrorLog "logs/dummy-host.example.com-error.log"
        CustomLog "logs/dummy-host.example.com-access.log" common
    </VirtualHost>

这适用于设备,就像在iphone上我可以拨打172.20.10.4:8181然后转到site1和8182转到第二站。

新问题

网站的网址现在搞砸了,我只能通过他们的IP端口而不是他们的域名访问这些网站,所以在本地机器上127.0.0.1:8181转到网站1但www.site1.net找不到该站点所在的服务器目录。

2 个答案:

答案 0 :(得分:2)

好的

如果你使用的是ip地址(来自你网络上的另一台PC),而不是像www.site2.com这样的网址,那么Apache就不知道应该运行哪个网站,所以它总是选择它在VHost定义文件中找到的第一个网站并在那里建立联系。

因此,如果您想从内部网络上的其他PC访问您的网站,您必须运行自己的DNS服务器(位复杂)或在您需要设置的其他每台PC上运行他们的HOSTS文件了解你的2个网站,即

在您的其他PC上发送文件假设您的WAMPSevrer在192.168.1.10上运行

192.168.1.10 www.site1.net 
192.168.1.10 www.site2.com 

现在这些其他PC可以使用正确的URL,即www.site1.netwww.site2.com,Apache服务器将知道要将连接发送到哪个站点。

现在我觉得你提到了一部电话。这有点复杂,因为你无法访问手机上的HOSTS文件(如果你已经越狱了它可能就可以了)

因此,我使用了一些解决方法。

我使用Fiddler,它是一个工具,用于查看从运行浏览器的PC在浏览器和服务器之间上下移动的内容。 但您也可以将其用作代理I think this is the documentation

基本上你把它设置为监听端口8888上的连接,然后你在现有脚本中添加一行,告诉它在8888上看到连接时转到特定网址,你可以因此使用网址像192.168.1.10:8888这样的手机到达site1.net,然后更改脚本,以便转到site2.com

它有点被污染但它对我有用。

回答第二个问题

你没有提到你正在使用的WampServer或Apache的版本,所以我在新行中添加了对该版本的测试。

您在虚拟主机的定义中犯了一些错误。请参阅下面的更正

<VirtualHost *:80>
    ServerAdmin me@mysite.net
    DocumentRoot "c:/wamp/www"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
    <Directory  "D:/wamp/www">
        AllowOverride All

        <IfDefine APACHE24>
            Require local
            Require ip 192.168.2      <- change to your subnet first 3 quartiles
        </IfDefine>

        <IfDefine !APACHE24>
            Order Deny,Allow
            Deny from all
            Allow from 127.0.0.1 localhost ::1 
            Allow from 192.168.2       <- ditto
        </IfDefine>
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin me@site1.net
    DocumentRoot "c:/wamp/www/site1"
    ServerName www.site1.net
    ServerAlias site1.net
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
    <Directory  "D:/wamp/www/site1">
        AllowOverride All

        <IfDefine APACHE24>
            Require local
            Require ip 192.168.2  <- change to your subnet first 3 quartiles
    </IfDefine>

    <IfDefine !APACHE24>
            Order Deny,Allow
            Deny from all
            Allow from 127.0.0.1 localhost ::1 
            Allow from 192.168.2       <- ditto
        </IfDefine>
    </Directory>

</VirtualHost>

<VirtualHost *:80>
    ServerAdmin me@site2.com
    DocumentRoot "c:/wamp/www/site2"
    ServerName www.site2.com
    ServerAlias site2.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common
    <Directory  "D:/wamp/www/site2">
        AllowOverride All

        <IfDefine APACHE24>
            Require local
            Require ip 192.168.2  <- change to your subnet first 3 quartiles
        </IfDefine>

        <IfDefine !APACHE24>
            Order Deny,Allow
            Deny from all
            Allow from 127.0.0.1 localhost ::1 
            Allow from 192.168.2       <- ditto
        </IfDefine>
    </Directory>
</VirtualHost>

基本上你需要告诉每个apache哪些IP可以访问每个vhosts文件夹。 因此,如果您愿意,可以保留修改后的端口,但保留<Directory>...</Directory部分。

同时检查你的HOST文件,当你写下你的问题但你说你的主机文件看起来像这样可能是一个错字

127.0.0.1       localhost
127.0.0.1       www.site1.net
127.0.0.1       www.site3.com

应该是这样的:

127.0.0.1       localhost
127.0.0.1       www.site1.net
127.0.0.1       www.site2.com

答案 1 :(得分:0)

这将使情况复杂化,请不要使用同一台服务器的IP地址或同一台服务器的名称。每台计算机都有唯一的IP,因此请提供正确的IP,并且不要重复使用您的项目的站点名。.如果您拥有192.168 .1.1 for site1.come,那么您应该对site2.com使用192.168.1.100。.127.0.0.1仅代表1个服务器ip和1个站点名..请注意这些区别,因为在一个地址中呼叫两个人可能会导致一个和您期望同时拥有2个。.谢谢!