我在服务器上运行了很多网络应用。我已经制作了一些,其中一些是开源的(如开放云)。我的所有网络应用都在特定端口上运行。我的端口80仍然是免费的。
我想在端口80上为我的所有应用程序制作一个不错的欢迎网页,以便我的同事能够在本地网络上看到它们。
我的问题是设置网址映射。我希望路径http://machine-name:80/open-cloud/
与http://machine-name:8080/
完全相同(如果可能,包括静态文件)。
另一种可能的解决方案是为每个应用程序使用http://open-cloud.machine-name:80/
等子域。但我不知道如何在本地网络中这样做。
我正在寻找Python,node.js或Go的解决方案(这将是非常棒的!)。重要的是要注意我的网络应用程序都没有在ssl上运行,并且它可能会处理非常低的流量。毕竟它只是一个本地网络!
欢迎任何帮助和参考。
干杯!
答案 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。