ShimmerCat在使用“旧方式”时使用反向代理

时间:2016-02-14 00:32:41

标签: django reverse-proxy shimmercat

我已经使用ShimmerCatsc-tool连接到我的开发网站here,并且所有内容都像是一个魅力,但我也想遵循“老方法“配置我的/etc/hosts。在这种情况下,我有一个小问题,服务器运行正常,我可以访问我的开发站点(假设我使用https://www.example.com:4043/),但我也使用反向代理,如{{3在} this article上。它会重定向到我正在使用的Django应用。假设它是我的devlove.yaml配置文件:

---
shimmercat-devlove:
    domains:
        www.example.com:
            root-dir: site
            consultant: 8080
            cache-key: xxxxxxx
        api.example.com:
            port: 8080

问题在于,当我尝试访问请求URL的{​​{1}}时,会从API发送404响应。让我试着通过一个例子来解释它。我尝试访问config file reference,并在此页面上向API API发出请求,然后/api/<country>/towns/端点返回API响应所以它没有找到404,这在使用URLGoogle Chrome时不会发生。我在sc-tool上设置了www.example.comapi.example.com两个域名。我一直试图解决它,但没有运气,有什么我想念的吗?欢迎任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

通过更多的数据,我们可以找到问题。与此同时,这里有一个故障排除提示列表:

可能的问题:DNS在浏览器中缓存,/ etc / hosts未被使用(尚未)

如果您的浏览器在更改/etc/hosts文件之前未完成DNS查找,则会发生这种情况。然后连接将转到Internet中可能没有您正在调用的API端点的域。

疑难解答:查看ShimmerCat的日志以获取请求。如果这是问题,关闭和打开浏览器可能会解决问题。

可能的问题:主机标头不正确

ShimmerCat使用HTTP / 1.1请求中的Host标头和HTTP / 2请求中的:authority标头来区分域。它总是丢弃它们中存在的任何端口号。如果未设置这些标头或将其设置为除ShimmerCat配置为侦听的域之外的域,则服务器将认为情况如此卑鄙,以至于它将关闭连接。

疑难解答:这不是404错误,而是关闭连接(如果尝试连接未代理,直接连接到ShimmerCat正在侦听的SSL端口),或者Socks连接失败(如果试图通过ShimmerCat的内置SOCKS5代理连接。在前一种情况下,服务器将使用域的实际值在其日志中打印消息“拒绝请求至https://some-domain-or-ip/some/path,或者“拒绝请求到Nothing “,如果没有标题。第二种情况更复杂,因为SOCKS5代理在HTTP路由算法之前。

在任何情况下,浏览器都会在开发人员工具的网络面板中添加一条红线。如果您使用curl访问服务器,请执行以下操作:

curl  -k -H host:api.incorrect-domain.com https://127.0.0.1:4043/contents/blog/data-density/

或喜欢

curl  -k -H host:api.incorrect-domain.com 

(注意第二种形式的--http2参数),您将收到回复:

curl: (56) Unexpected EOF

额外提示:浏览器的开发人员工具中有一个网络地址字段。检查一下,它可能会告诉你一些事情!

可能的问题:将请求传递给api后端时会出现问题。

API后端对主机头以及身份验证cookie和请求参数等其他内容也很敏感。

疑难解答:诊断事物的方法是使用--show-proxied-headers命令行选项调用ShimmerCat。它使ShimmerCat将代理头报告给日志:

Issuing request with headers         :authority: api.example.com
    :method: GET
    :path: /my/api/endpoint/path/
    :scheme: https
    accept: */*
    user-agent: curl/7.47.0

可能的问题:有两个或更多的ShimmerCat运行

......他们正在使用不同的配置。 ShimmerCat使用多个进程之间的端口共享来提高可用性。这样做的缺点是完全有可能错误地启动ShimmerCat,忘记停止它,并在更改一些配置位后再次启动它。这两个实例将同时运行,其中任何一个都会选择与侦听端口建立的连接。

疑难解答:关闭ShimmerCat的所有实例,然后使用相应形式的ps命令仔细检查没有运行,并使用所需的配置启动服务器。