将url路径重定向到端口

时间:2013-07-09 12:39:19

标签: python node.js network-programming go

我在服务器上运行了很多网络应用。我已经制作了一些,其中一些是开源的(如开放云)。我的所有网络应用都在特定端口上运行。我的端口80仍然是免费的。

我想在端口80上为我的所有应用程序制作一个不错的欢迎网页,以便我的同事能够在本地网络上看到它们。

我的问题是设置网址映射。我希望路径http://machine-name:80/open-cloud/http://machine-name:8080/完全相同(如果可能,包括静态文件)。

另一种可能的解决方案是为每个应用程序使用http://open-cloud.machine-name:80/等子域。但我不知道如何在本地网络中这样做。

我正在寻找Python,node.js或Go的解决方案(这将是非常棒的!)。重要的是要注意我的网络应用程序都没有在ssl上运行,并且它可能会处理非常低的流量。毕竟它只是一个本地网络!

欢迎任何帮助和参考。

干杯!

2 个答案:

答案 0 :(得分:3)

您只需要某种代理,例如http://nginx.org

然后将您想要的域名传递给您的应用程序端口:

server {
  listen 80;
  server_name app1.local;

  location / {
    proxy_pass          http://127.0.0.1:8080/;
    proxy_set_header    HOST $http_host;
    proxy_set_header    X-Real-IP $remote_addr;
  }
}

答案 1 :(得分:2)

如果您坚持在Go中编写自己的解决方案,则可以为每个网址设置http.Redirect 像这样:

import "net/http"

var urlMap = map[string]string {
    "open-cloud": "http://machine-name:8080/",
    "some-other": "http://machine-name:9090/",
}

func redirectHandler(target string) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        http.Redirect(w, r, target, 301)
    }
}

func main() {
    for key, target := range urlMap {
        http.HandleFunc("/" + key, redirectHandler(target))
    }

    http.ListenAndServe(":80", nil)
}

但是,我宁愿依赖像nginx这样的工具作为已经提出的joewhite86。