如何从本地networking中的一台计算机提供多个域

我在本地networking中为我的django项目提供服务时遇到问题。 每个项目在hosts文件中都需要一个唯一的域名。 在我的本地networking中,其他计算机无法看到这些项目。

我的电脑IP在networking上是192.168.2.2我电脑上的主机文件如下:

127.0.0.101 myProject1.local 127.0.0.102 myProject2.local 127.0.0.103 myProject3.local 

我想我必须这样做,但它不起作用。

 192.168.2.101 myProject1.local 192.168.2.102 myProject2.local 192.168.2.103 myProject3.local 

最后,我find了解决scheme,它必须在本地networking中build立一个DNS服务器,如果你有任何服务器版的操作系统计算机,它将很容易configuration其DNS服务器,并指向你的项目IP。 但是当networking中没有服务器计算机(例如:家庭networking)时,问题就是find一个DNS服务器来搪塞责任。

我将在Windows 7上configurationApache或其他任何东西来处理与WSGI的Django项目…

我的本地IP地址是192.168.2.2,并且在路由器设置中将其与我的MAC地址绑定。
注意:请务必使您的IP不可更改,否则会使您的DNS服务器和本地networking不稳定。

1.configurationApache以服务多个域:

第一步是configurationApache运行项目:
下面将为www.myproject1.local上的myProject1和www.myproject2.local上的myProject2

 NameVirtualHost *:80 <VirtualHost *:80> ServerName www.myProject1.local ServerAlias myProject1.local *.myProject1.local ServerAdmin [email protected] DocumentRoot "C:/path/to/myProject1/" </VirtualHost> <VirtualHost *:80> ServerName www.myProject2.local ServerAlias myProject2.local *.myProject2.local ServerAdmin [email protected] DocumentRoot "C:/another/path/to/myProject2/" </VirtualHost> ... 

有关更多信息,请访问:[基于Apache名称的虚拟主机支持]

2.使用WSGI的Django午餐项目:

如果你想服务一个PHP项目的作品,但要configurationWSGI,你必须做一些像下面的变化。 我把project1当成django项目

 <VirtualHost *:80> ServerName www.myProject1.local ServerAlias myProject1.local *.myProject1.local ServerAdmin [email protected] #WSGIDaemonProcess myProject1 processes=2 threads=15 display-name=%{GROUP} #WSGIProcessGroup myProject1 WSGIScriptAlias / "C:/path/to/myProject1/myproject1.wsgi" </VirtualHost> ... 

一定要加载:[mod_wsgi.so]

注释行WSGIDaemonProcessWSGIProcessGroup是执行更好的WSGI服务的更多信息的选项访问:[mod_wsgi Wiki页]

3.安装DNS服务器

现在你必须configuration你的DNS服务器。 在我的情况下,我没有在我的电脑上安装DNS服务器,所以第一步是find适当的DNS服务器来完成这项工作。
我使用[MaraDNS],并configuration它如下所示:

mararc文件

 ipv4_bind_addresses = "192.168.2.2" timestamp_type = 2 random_seed_file = "secret.txt" hide_disclaimer = "YES" csv2 = {} csv2["myproject1.local."] = "db.default.txt" csv2["myproject2.local."] = "db.default.txt" upstream_servers = {} upstream_servers["."] = "yyy.yyy.yyy.yyy, zzz.zzz.zzz.zzz" 

和下面的db.default.txt文件

 % 192.168.2.2 ~ www.% 192.168.2.2 ~ 

有关maraDNS的更多信息,请访问MaraDNS网站

4.午餐DNS服务器:

午餐maraDNS服务器

 maradns -f mararc 

5.路由器设置:

您可以通过将主DNS服务器设置为指向本地networking中每台计算机的192.168.2.2来访问您的域。 但您也可以设置路由器DHCP服务器使用您的IP作为默认的DNS服务器。 它只需要访问路由器networkingpipe理。
所以input您的IP作为DNS服务器和工作完成。

6.享受诀窍:

现在,您可以在本地networking中将您的项目作为伪造域来使用,而无需使用:端口号或IP地址。 只需在任何本地networking计算机或WiFi设备的地址栏中inputmyproject1.local即可获得正确的结果。
🙂

你正试图做的是在同一个主机上设置多个IP地址,而不是域名。 您尝试执行的操作有几个问题:首先,您似乎只在运行服务器应用程序的计算机上设置hosts文件,这意味着networking中没有其他计算机可以知道它们。

另一个问题是,要在同一个主机上设置多个IP地址,您必须在networkingconfiguration中执行此操作,并且根据所使用的操作系统不同而有所不同。

第三件事是你不需要每个主机一个IP地址。 一个IP地址可以有许多主机名。 这是在名称服务器中设置的,或者如果您没有用于本地networking,则可以在hosts文件中使用别名:

 192.168.0.101 hostname1 hostname2 hostname3 

然后在Apache(或任何您使用的Web服务器)中使用基于名称的虚拟主机 。

并且使用127.xxx范围内的IP地址logging当前的设置,这些对于主机来说总是被认为是本地的,所以尝试通过该地址范围连接另一台计算机将永远不会工作。