Cherrypy应用程序重定向到http而不是nginx后面的https

时间:2016-12-31 03:32:10

标签: python ssl nginx cherrypy

我有一个讨厌的webapp,我在ssl的nginx反向代理后面托管。

nginx位置设置如下:

    location /webapp {
        proxy_pass http://127.0.0.1:8642;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

加载https://myaddress.com/webapp时,一切正常。页面加载正常。

但是当我点击任何链接时,它会打开http://myaddress.com/webapp/page,当使用ssl在nginx后面加载时不会加载。

链接很简单

<a href='/webapp/page'>Page</a>

然后我可以手动打开https://myaddress.com/webapp/page加载正常。

我无法弄清楚为什么浏览器将其踢到http://而不是停留在https://

编辑:

前一段时间我想到了这种情况,并忘记了这篇文章。

将主方法名称从index()更改为default()修复此问题。我无法弄清楚原因,而且我无法在CherryPy文档中找到任何内容。

因此,当访问mysite.com/news时,Cherrypy现在返回News.default()而不是News.index(),这并不会更改URI。

1 个答案:

答案 0 :(得分:3)

您是否启用了反向代理工具?

您可以通过添加到配置文件中来执行此操作:

tool.proxy.on = True

或通过装饰。

@cherrypy.tools.proxy

该工具的部分功能是通过将协议从http调整为https来调整应用程序库。