Curl在Nginx重新启动后无法检索数据

时间:2019-07-04 17:29:33

标签: nginx curl

在重新启动服务器之前,我的服务器运行良好,现在带有cURL API的程序停止运行。经过长时间的故障排除,我发现了问题所在。

当我使用此命令时:

curl -i https://server.my-site.com/checkConnection

Nginx返回错误:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 04 Jul 2019 17:14:40 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Location: /checkConnection/

但是如果我使用此命令:

curl -i -L https://server.my-site.com/checkConnection

然后服务器返回:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 04 Jul 2019 17:14:40 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Location: /checkConnection/

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 04 Jul 2019 17:14:40 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 2
Connection: keep-alive
X-Frame-Options: SAMEORIGIN

ok

如果我使用浏览器,则一切正常。我不知道错误来自何处。以及如何解决。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

这是路径映射到目录时发生的情况。从理论上讲,像http://example.org/directory这样的URL可以映射到/wherever/public_html/directory这样的目录,并且是一个目录,从那里显示index.html或类似文件;但是,当您引用同一目录中的其他内容(例如图像)时,这将导致令人惊讶的问题。 <img src="picture.jpg">会加载http://example.org/picture.jpg而不是http://example.org/directory/picture.jpg,因为它是相对于浏览器实际查看的URL的。因此,HTTP服务器通常会发出重定向以在末尾添加斜杠,然后将正确的页面加载到URL上,在该URL上相对路径可以满足人们的期望。

在curl命令行中添加-L会使它遵循重定向,就像浏览器一样,您将获得预期的结果。没有-L,curl是一个更幼稚的http客户端,可让您随心所欲地处理信息。

答案 1 :(得分:0)

也许您有一个www.server.my-site.com规则,这就是为什么它返回301的原因,因为它是从server.my-site.com重定向到www网站,也许您应该共享配置以进行检查< / p>

答案 2 :(得分:0)

好的。最后,我通过向uwsgi添加内部路由来修复它。现在一切正常。