我使用Nginx虚拟主机为域提供服务,我想在部署之前在本地测试我的配置。
我发现这样做的唯一方法是在本地端口80上运行nginx并暂时将以下行添加到我的/etc/hosts
文件中:
127.0.0.1 example.com
导致example.com
解析为我的本地nginx实例。
有没有更好的方法来解决这个问题?
答案 0 :(得分:0)
当我只需要快速检查在我的本地主机上运行的服务器时,以下shell脚本已被证明是方便的:
spoof() {
hosts_file='/etc/hosts'
temp=$(mktemp)
cp "$hosts_file" "$temp"
trap 'sudo sh -c "mv \"$temp\" \"$hosts_file\""; trap "" EXIT; return 0' 0 1 2 3 9 15
hosts_lines="6i# SPOOFS:\n"
for i in "$@"; do
hosts_lines+="127.0.0.1\t$i\n"
shift
done
sudo sh -c "sed -i \"$hosts_lines\" \"$hosts_file\""
echo "Press CTRL-C to exit..."
sleep infinity
}
它需要任意数量的域,欺骗它们,并在退出时替换原始/etc/hosts
。用法示例:
$ spoof example.com example.net example.org
对于长期使用,我使用Vagrant和vagrant-hostsupdater插件。
安装后,只需将config.hostsupdater.aliases = ['dev.example.com']
添加到任何Vagrantfile即可访问" example.com"在VM上通过" dev.example.com"在主持人身上。