我正在尝试通过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
值得注意的是,这主要是通过网上找到的碎片拼凑而成的,所以如果有些东西可疑,答案可能就是“马修是个白痴。”
非常感谢:) 中号
答案 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;
}
}