所以我正在运行一个带有简单 HTML 代码的前端 (lighttpd) 容器,我尝试从另一个充当我的 node.js API 的 pod 中获取名称,我可以使用curl 从 lighttpd pod 连接到 API但当我在浏览器中运行时,无法从 HTML 代码解析 URL。
我已经从这篇文章中找到了原因,但现在我一直在试图弄清楚如何处理这个问题。有没有一种方法可以从 pod 内而不是浏览器中解析 URL,或者如何我是否可以使用 NodePort 来执行此操作?
<script>
// fetch user from API
fetch("http://nodejs-service:8888/user")
.then((res) => res.json())
.then((data) => {
// get user name
const user = data.name;
// display user name
document.getElementById("user").innerText = user;
});
</script>
我尝试将工作节点的 IP 放在那里,但这也不起作用,而且我认为该地址也可以更改,所以这不是一个好的解决方案。
通用解决方案是拥有公共 DNS 名称
api.example.org
。
您可以使用 lighttpd 作为反向代理,将 api.example.org 的流量定向到特定的内部服务。
根据您所做的事情,lighttpd 有一些额外的选项:
lighttpd mod_proxy有一个指令
proxy.header
,它可以对请求标头和响应标头进行一些重写,但不能重写请求或响应正文内容。
lighttpd mod_magnet 允许编写自定义 lua 脚本,该脚本可以修改请求和响应标头,还可以对响应正文执行任意更改。