我需要在本地主机上测试子域。如何有效地将这种结果添加*.localhost.com
到我的/etc/hosts/
文件中?
如果不可能,如何解决此问题?我需要在本地服务器上测试通配符子域。它是Django开发服务器,Django开发服务器可以处理子域吗?其他一些软件/路由可以给我最终的结果吗?
我需要在本地主机上测试子域。如何有效地将这种结果添加*.localhost.com
到我的/etc/hosts/
文件中?
如果不可能,如何解决此问题?我需要在本地服务器上测试通配符子域。它是Django开发服务器,Django开发服务器可以处理子域吗?其他一些软件/路由可以给我最终的结果吗?
Answers:
我已经用Python编写了DNS代理。它将读取/ etc / hosts中的通配符条目。看到这里:https : //github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py
pip install
做到这一点:)
安装dnsmasq(无论如何,我都会在所有Linux桌面上都将它作为DNS缓存来执行)。在dnsmasq.conf
添加行:
address=/localhost.com/127.0.0.1
sudo port install dnsmasq
2.编辑/opt/local/etc/dnsmasq.conf
3.sudo port load dnsmasq
192.168.50.11
但是DNS无法解析。任何想法,此示例是否适用于“非127.0.0.1” IP?
/etc/NetworkManager/dnsmasq.d/dnsmasq-localhost.conf
并将其放入address=/localhost.com/127.0.0.1
其中,然后重新启动。
--address=
dnsmasq.conf手册页部分中描述的行为的哪一部分没有涵盖上述用例?
我个人喜欢为此创建一个PAC文件,并使我的浏览器使用它。
步骤1:建立档案,例如:*.proxy.pac*
某处(我使用我的资料$home
夹)
步骤2:粘贴以下代码(示例使用端口8000):
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*localhost")) {
return "PROXY localhost:8000";
}
return "DIRECT";
}
步骤3:让您的浏览器使用此PAC文件。
步骤4:现在,您可以通过访问以下内容来测试您的应用程序:http://mysubdomain.localhost/
步骤5:尽情享受:)
wget
,不会受到此影响)。这本身不是问题,但是也许最好提一下。
req.url
现在是绝对URL。这样做是因为假设您要编写一个实际的代理服务器,但是如果您使用此技术只是为了停止添加/ etc / hosts条目以进行调试,那么这是令人惊讶的。仅供参考,以便那些可能走与我一样的人。
我整理了我的一个旧项目:
https://github.com/airtonix/avahi-aliases
要求:
与使用dnsmasq或python dns代理相比的优势:
在我的情况下,此基于DNS的解决方案运行完美,无需安装任何东西:https : //gist.github.com/fedir/04e60d679d5657d1f9f9aa10b3168282(Mac OSX 10.9)
简短的答案是你不知道。更长的答案是,您需要更清楚地了解实际想要实现的目标,因为也许有更好的方法,但是有另一种方法可以实现它。
对于网络托管(我从未见过使用过),是在DNS中结合虚拟主机感知的Web服务器完成的。有关通配符DNS记录的更多信息(Wikipedia),以及有关使用Apache和Bind for Linux使用bind和Apache进行通配符托管的文章。
最糟糕的是,您可以使用我想使用的本地DNS服务器。
此主题的常见任务是将目录映射到子域。一种非常简单的方法是将基于目录的条目自动附加到hosts文件:
#!/ usr / bin / python 导入操作系统 hostsFile = open(“ / etc / hosts”,“ a +”); 行数= hostsFile.readlines() 对于os.listdir('/ opt / subdomainDirs')中的fileName: entryExists = False 对于行中的行: 如果fileName行: entryExists =真 如果没有,则存在: hostsFile.write(“ 127.0.0.1” + fileName +“ .localhost \ n”);
谢谢tschundeee,我认为这是该问题的最终答案,希望我能发表评论,但这是那些试图实现原始目标的人员的完整配置(通配符都指向相同的代码库-无需安装,开发环境即,XAMPP)
文件:/ etc / hosts(非Windows)
127.0.0.1 example.local
文件:/XAMPP/etc/httpd.conf
# Virtual hosts
Include etc/extra/httpd-vhosts.conf
文件:XAMPP / etc / extra / httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin admin@example.local
DocumentRoot "/path_to_XAMPP/htdocs"
ServerName example.local
ServerAlias *.example.local
# SetEnv APP_ENVIRONMENT development
# ErrorLog "logs/example.local-error_log"
# CustomLog "logs/example.local-access_log" common
</VirtualHost>
重新启动Apache
另存为any.pac,然后将其加载到浏览器的网络>代理>自动配置设置中(如果更改此设置,则重新加载)
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*example.local")) {
return "PROXY example.local";
}
return "DIRECT";
}