如何在本地使用生产Web服务器配置

时间:2015-03-16 01:18:02

标签: testing nginx webserver

我使用Nginx虚拟主机为域提供服务,我想在部署之前在本地测试我的配置。

我发现这样做的唯一方法是在本地端口80上运行nginx并暂时将以下行添加到我的/etc/hosts文件中:

127.0.0.1    example.com

导致example.com解析为我的本地nginx实例。

有没有更好的方法来解决这个问题?

1 个答案:

答案 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"在主持人身上。