在重新启动服务器之前,我的服务器运行良好,现在带有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
如果我使用浏览器,则一切正常。我不知道错误来自何处。以及如何解决。
感谢您的帮助!
答案 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添加内部路由来修复它。现在一切正常。