0

假设我有以下简单的 Go 网络应用程序:

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

我有一个由我的大学 ( www.univ.edu/me) 托管的网站,目前我有一个 wiki 设置www.univ.edu/me/wiki,它运行良好。我的问题是如何在那里部署上面的 Go 应用程序以便可以通过它访问它 www.univ.edu/me/mygoapp

我找到了一些解决方案,但它们似乎都需要 root 权限。就我而言,我没有 root 访问权限,也无法修改服务器的配置,这很可能是 Apache。

更新:感谢您的回复。在我的情况下,Apache 服务器似乎位于与物理托管我的网站文件的机器不同的机器上。具有 Apache 的机器/IP 拒绝 ssh 连接,因此无法直接检查服务器的配置。

4

2 回答 2

2

看看阿帕奇mod_proxy。当请求某些虚拟目录时,它提供代理另一个 HTTP 服务器:

<Location /goapp/>
    ProxyPass http://localhost:8080/
</Location>

您可能需要对 Apache 配置进行其他更改,以确保请求正确传递。

于 2013-05-29T01:17:32.593 回答
1

如果您对 MediaWiki 安装中的文件具有写入权限,.htaccess您可以添加:

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

这取决于全局 Apache 配置,因为mod_proxy通常在大学等场所被禁用或限制,但值得一试。

有关详细信息,请参阅http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypasshttp://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypassreverse 。

于 2013-05-29T10:49:36.543 回答