我正在运行一个Nginx(0.7.67)作为反向代理和一个golang应用程序。 Nginx服务器configuration如下:
… location /bar/ { proxy_pass http://localhost:8088/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } …
我的golang应用程序的来源(这是没有道理的,只是一个例子):
func root(w http.ResponseWriter,r *http.Request) { fmt.Fprint(w,\”You reached root\”) } func foo(w http.ResponseWriter,r *http.Request) { http.Redirect(w,r,\”/\”,http.StatusFound) } func main() { http.HandleFunc(\”/\”,root) http.HandleFunc(\”/foo\”,foo) http.ListenAndServe(\”localhost:8088\”,nil) }
问题:当我将浏览器指向我的应用程序的URL( https://domain.tld/bar/ )时,我可以看到文本“您到达根目录”。 但是,如果我尝试打开https://domain.tld/bar/foo ,我将redirect到https://domain.tld而不是https://domain.tld/bar 。 看来我的应用程序正在redirect到Nginx服务器的根,而不是应用程序。
问题:如何从应用程序的内部(运行在Nginx反向代理之后)redirect到我的应用程序的根目录,而不是服务器的根目录?
主进程从systemd启动时不能分离subprocess
确定当前进程在WOW64中运行还是不在Go中
我需要使用Nginx还是Apache来使用Lets Encrypt?
计算Go中的文件的硬链接
为什么“pstack”只打印一个线程的内容?
与PHP应用程序一起部署Go应用程序有哪些select?
在Golang中读取文件时如何跳过文件系统caching?
在一个IP上托pipe多个Golang站点并根据域请求提供服务?
Goroutines 8kb和windows *** 作系统线程1 mb
在Apache mod_proxy_wstunnel后面使用go-websocket
这是一个无法用任何语言自动解决的问题,甚至PHP。 像wordpress这样的应用程序有一个设置来指定根。 有些应用程序需要一个完整的URL( https://domain.tld/bar )或者只能有一个路径(/ bar)。
无论哪种方式,您需要创建一个设置,然后手动配置所有重定向从那里基础。 你可以创建你自己的重定向功能,所以你不需要每次重定向时都实现它。
总结
以上是内存溢出为你收集整理的在nginx反向代理上的应用redirect错误全部内容,希望文章能够帮你解决在nginx反向代理上的应用redirect错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容