【发布时间】:2025-11-25 10:25:01
【问题描述】:
我正在尝试让一个使用在 Google Compute Engine 上运行的服务器发送事件的应用程序,当 SSH 进入框中时,我可以查看它们,但不能通过临时 IP 在外部查看,也就是
curl 0.0.0.0/route
在盒子里面工作,但是
curl xx.xx.xx.xx/route
只是挂起,查看来自其他路由的标头,似乎在盒子和外部单词之间存在某种缓存代理,由于连接尚未完成,因此阻止服务器发送的事件退出,有在您关闭 proxy_cache 之前,nginx 会出现类似问题,但据我所知,没有用于配置计算引擎使用的代理的文档。
是否可以从 Google Compute Engine 执行服务器发送事件,如果可以,您需要做什么才能使其正常工作?
编辑:
Request 是使用浏览器 EventSource 对象创建的,因此它具有看起来像 Accept:text/event-stream、Cache-Control:no-cache 以及 Referer 和 User-Agent 的默认标头。
我添加的标题是Content-Type:text/event-stream、Cache-Control:no-cache 和Connection:keep-alive。
假设我适当地修改了配置,当我在 nginx 后面运行它时,在 AWS 中运行一切都很好。
在 Google Compute Engine 中,其他页面加载正常,但带有服务器发送事件的路由甚至挂起,甚至从未接收到标头。我怀疑谷歌在 GCE 盒子和外界之间粘贴代理的原因是添加了 Via:HTTP/1.1 proxy10205 标头。
【问题讨论】:
-
我认为您需要提供更多信息才能更好地诊断原因。你能用你看到的标题更新吗?既发送又接收?到目前为止,我还没有听说过任何与 GCE 相关的代理问题,但这里有一个可能对您有用的线程:serverfault.com/questions/634658/… 考虑到它在内部而不是外部工作,您是否确保所有防火墙规则都是设置允许流量? (我假设你有,但只是问。)
-
用更多信息对其进行了更新,我能找到设置的唯一防火墙规则是与仅转发除指定地址之外的任何内容有关的规则,因此我可以访问所有其他页面的事实让我认为我设置了正确设置,如果有其他类型的防火墙规则我找不到这可能是问题。
标签: google-compute-engine gcloud