1

我在服务器上运行了许多 Web 应用程序。其中一些是我制作的,其中一些是开源的(例如 open-cloud)。我所有的网络应用程序都在特定端口上运行。我的 80 端口仍然空闲。

我想在端口 80 上为我的所有应用程序制作一个漂亮的欢迎网页,以允许我的同事在本地网络上看到它们。

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

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

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

欢迎任何帮助和参考。

干杯!

4

2 回答 2

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;
  }
}
于 2013-07-09T13:21:39.227 回答
3

如果你坚持用 Go 编写自己的解决方案,你可以http.Redirect像这样为每个 URL 设置一个:

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)
}

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

于 2013-07-09T17:06:32.437 回答