新手问题 求助在虚拟机里部署遇到的问题

zicjin · 2014年06月11日 · 最后由 appell 回复于 2014年06月21日 · 2564 次阅读

我用 virtualbox 运行了 ubuntu-server 部署。 宿主机是 centos,nginx 配置成:

server {
            listen       80;
            server_name  example.com;
            location / {
                proxy_pass http://127.0.0.1:8087/;
                proxy_redirect http://127.0.0.1:8087/ http://example.com/;
            }
        }

然后 virtualbox 使用端口转发功能把 8087 端口转发到 ubuntu 的 80 端口: VBoxManage modifyvm "ubuntu" --natpf1 "web,tcp,,8087,,80"

现在http://example.com/500.html 访问没问题。但是访问http://example.com 会被跳转成http://127.0.0.1:8087 当然就不可访问了。换一个端口比如把 8087 换为 8088 也会被跳转至http://127.0.0.1:8088

这和 ruby-china 程序有什么特殊关联吗?因为以前用 virtualbox 部署过其它非 ruby 的网站没有这种问题。

补充: 在 fiddler 里查看 http 请求,直接访问 http://example.com 的 response 会出现 Location: https://127.0.0.1:8088/ 字段。访问 http://example.com/500.html 不会有这个字段

为什么在设置了 proxy_pass 和 proxy_redirect 后在 virtualbox 上使用端口转发?

#1 楼 @appell virtualbox 不转发端口的话怎么监听主机 8087 端口?

@zicjin 不理解。为什么要监听主机 8087 端口?你的 server 和 应用 不是在 ubuntu 上么?

@appell server 和 应用在 virtualbox 的 ubuntu 上。所以外网访问的任何端口都是访问的宿主机。不转发的话就跟 virtualbox 毫无关联了啊

推荐直接用 vagrant,配置还方便

@zicjin 用 virtualbox 的桥接网络设置,如果可以的话。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号