Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将url路径重定向到端口_Python_Node.js_Network Programming_Go - Fatal编程技术网

Python 将url路径重定向到端口

Python 将url路径重定向到端口,python,node.js,network-programming,go,Python,Node.js,Network Programming,Go,我有许多web应用程序在服务器上运行。其中一些是我制作的,一些是开源的,比如开源云。我的所有web应用程序都在特定端口上运行。我的端口80仍然可用 我想在端口80上为我的所有应用制作一个漂亮的欢迎网页,让我的同事在本地网络上看到它们 我的问题是设置URL映射。我想要这条路http://machine-name:80/open-云/那就完全一样了http://machine-name:8080/ 如果可能,包括静态文件 另一个可能的解决方案是使用子域,例如http://open-cloud.mac

我有许多web应用程序在服务器上运行。其中一些是我制作的,一些是开源的,比如开源云。我的所有web应用程序都在特定端口上运行。我的端口80仍然可用

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

我的问题是设置URL映射。我想要这条路http://machine-name:80/open-云/那就完全一样了http://machine-name:8080/ 如果可能,包括静态文件

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

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

欢迎提供任何帮助和参考


干杯

您只需要某种代理,例如

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

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

您只需要某种代理,例如

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

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

如果您坚持用Go编写自己的解决方案,您可以为每个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这样的工具。

如果您坚持用Go编写自己的解决方案,您可以为每个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这样的工具。

既然可以用nginx这样的工具来做,为什么还要编写这样的程序?顺便说一句,用围棋只需写几十行代码就可以了。既然可以用nginx这样的东西来写,为什么还要写这样的程序呢?顺便说一句,用围棋写几十行代码很简单。我同意nginx,这就是我将要使用的。尽管如此,我也会考虑你的解决方案,因为我需要更认真地去做!我同意nginx,这就是我将使用的。尽管如此,我也会考虑你的解决方案,因为我需要更认真地去做!非常感谢你的邀请!它解决了我的问题。我知道这是一个基本的问题,但我很难找到一个优雅的解决方案。非常感谢!它解决了我的问题。我知道这是一个基本问题,但我很难找到一个优雅的解决方案。