gpt4 book ai didi

apache mod_proxy ProxyPassReverse Location header

转载 作者:行者123 更新时间:2023-11-28 22:51:57 25 4
gpt4 key购买 nike

我在 apache 后面安装了 tomcat,设置如下:

ServerName someapp.com

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

一切正常,直到 tomcat 响应 header 包含如下内容:

Location: /someapp/foo

它会导致 404 或 500,因为浏览器转到“http://someapp.com/someapp/foo”而不是“http://someapp.com/foo/

我做错了什么?

最佳答案

因为 ProxyPassReverse 将替换您的服务器返回的位置。
对于您的情况,您可以查看示例 1。

示例1(仅URL路径)

Apache2 设置

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

Node.js 设置

const express = require("express");
const app = express()

app.get('/', (req, res) => {
res.json({a: 8080})
})

app.get("/hi", (req, res) => {
res.json({a: "8080hi"})
})

app.get("/redirect", (req, res) => {
res.redirect("/hi")
})

app.listen(8080)

原始位置是“位置:/hi”。
新的是“位置:/8080/hi”。 (/=>/8080/)

这意味着 Apache2 将 Location 值替换为 ProxyPassReverse 设置。
或者您可以使用完整的 FQDN 来完成。

示例 2 (FQDN)

Apache2 设置

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

Node.js 设置

const express = require("express");
const app = express()

app.get('/', (req, res) => {
res.json({a: 8080})
})

app.get("/hi", (req, res) => {
res.json({a: "8080hi"})
})

app.get("/redirect", (req, res) => {
res.setHeader("Location", "http://localhost:8080/hi")
res.send(302)
})

app.listen(8080)

关于apache mod_proxy ProxyPassReverse Location header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37173287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com