从foo.website.com到localhost:xxxx在docker上使用nginx而不是物理机器上的localhost

时间:2014-01-17 10:04:37

标签: nginx localhost docker

我正在尝试通过foo.website.com显示localhost:8181上的内容,以及bar.website.com以显示localhost:3000。但是,我希望它从一个docker框显示localhost(其中:8181和:3000显示我想要的东西),而不是我物理机器上的localhost(它们是空白的 - 没有使用。)我正在使用nginx来这样做,nginx配置在我的docker文件中。

Gaphite在localhost:3000上运行并且graph-explorer(更好看/标记支持石墨前端)在localhost:8181上 - 当我将url直接放入浏览器时,两者都按预期工作。 Graphite的manage.py在localhost:8080上运行,这就是graph-explorer打开的原因:8181。

这是我在这里发表的第一篇文章,我是docker / nginx和网络的新手,所以如果我缺少信息/不清楚,我很乐意纠正......

nginx settings:
server {
    listen 80;
    root /opt/graphite/webapp/content;
    index index.html;

    location / {
      # checks for static file, if not found proxy to app
      try_files \$uri @app;
    }

    # The location is where I'm trying to go from
    location foo.website.com {
      # This is the port graph-explorer is running on
      proxy_pass 127.0.0.1:8181;
    }

    location @app {
        include fastcgi_params;
        fastcgi_split_path_info ^()(.*)$;
        fastcgi_pass 127.0.0.1:8080;
    }


    server_name website.com;
}

在我的主机文件中(在docker机器和虚拟机中都有docker运行 - 不确定我是否应该同时使用它们?)

127.0.0.1 foo.website.com
127.0.0.1 bar.website.com

值得注意的是,这主要是通过网上找到的碎片拼凑而成的,所以如果有些东西可疑,答案可能就是“马修是个白痴。”

非常感谢:) 中号

1 个答案:

答案 0 :(得分:-1)

如果我理解正确,你想:

foo.website.com代理传递给localhost:8181
bar.website.com代理传递给localhost:3000

试试这个:

server {  
    listen 80;
    server_name foo.website.com;

    # foo.website.com proxy pass to localhost:8181

    location / {
        proxy_pass http://127.0.0.1:8181;
        proxy_set_header Host $host;
    }
}
server {
    listen 80;
    server_name bar.website.com;

    # bar.website.com proxy pass to localhost:3000

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
    }
}