假设我有以下简单的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
)托管的网站,目前我在www.univ.edu/me/wiki
下设置了一个wiki,它运行正常。我的问题是我如何在那里部署上面的Go应用程序,以便可以通过www.univ.edu/me/mygoapp
访问它?
我找到了一些解决方案,但它们似乎都需要root权限。在我的情况下,我没有root访问权限,我无法修改服务器的配置,这很可能是Apache。
更新:感谢您的回复。看来,在我的情况下,Apache服务器所在的机器与物理托管我的网站文件的机器不同。具有Apache的机器/ IP拒绝ssh连接,因此没有直接的方法来检查服务器的配置。
答案 0 :(得分:2)
看看阿帕奇mod_proxy
。当请求某些虚拟目录时,它提供代理另一个HTTP服务器:
<Location /goapp/>
ProxyPass http://localhost:8080/
</Location>
您可能需要对Apache配置进行其他更改,以确保请求正确传递。
答案 1 :(得分: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#proxypass和http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypassreverse。