我正在使用Daphne运行Django + Channels服务器。 Daphne服务器位于Nginx后面。我的Nginx配置看起来像最后一样。
当我尝试连接到 var newWin = window.open(url, '_blank');
newWin.addEventListener('focus', function() {
var refreshBtnList = newWin.document.getElementsByClassName('refresh-table-data');
for (var idx=0; idx < refreshBtnList.length; idx++) {
refreshBtnList[idx].click(); // Here I'm getting span element properly but click is not getting trigger by this code
}
});
时遇到ws://example.com/ws/endpoint
错误。
对我来说,Daphne似乎正在使用协议路由到Django视图或Channels应用。如果看到NOT FOUNT /ws/endpoint
,则路由到Django视图;看到http
,则路由到Channels应用。
使用以下Nginx代理传递配置,URL始终具有ws
协议前缀。所以我在日志中得到404或找不到。如果我将proxy_pass前缀更改为http
,Nginx配置将失败。
在这种情况下,设置频道的理想方法是什么?
ws
答案 0 :(得分:0)
是的,例如在问题中,通道会根据协议标头ws
或http/https
来检测路由
无法在ws
中使用proxy_pass http://0.0.0.0:8000/;
前缀。要转发协议信息,应包含以下配置。
proxy_set_header X-Forwarded-Proto $scheme;
这会将架构/协议(ws
)信息转发到Channels应用。并根据此信息引导路线。