相关疑难解决方法(0)

Docker NGINX代理不转发Websockets

NGINX代理将HTTP GET请求而不是WebSocket握手传递给我的django应用程序.

事实:

  • 其余的非websocket代理到django app工作得很好.
  • 如果我直接连接到django应用程序容器,我可以使WebSockets工作.(下面的相关日志条目.)
  • nginx配置在我的开发机器上运行localhost(没有容器化).(下面的日志示例.)

相关日志:

通过容器化nginx代理连接时的Daphne日志:

`xxx.xxx.xxx.xxx:40214 - - [24/May/2017:19:16:03] "GET /flight/all_flight_updates" 404 99`
Run Code Online (Sandbox Code Playgroud)

Daphne在绕过容器化代理并直接连接到服务器时进行日志记录:

xxx.xxx.xxx.xxx:6566 - - [24/May/2017:19:17:02] "WSCONNECTING /flight/all_flight_updates" - -
xxx.xxx.xxx.xxx:6566 - - [24/May/2017:19:17:02] "WSCONNECT /flight/all_flight_updates" - -
Run Code Online (Sandbox Code Playgroud)

nginx(非容器化)配置的localhost测试工作:

[2017/05/24 14:24:19] WebSocket HANDSHAKING /flight/all_flight_updates [127.0.0.1:65100]
[2017/05/24 14:24:19] WebSocket CONNECT /flight/all_flight_updates [127.0.0.1:65100]
Run Code Online (Sandbox Code Playgroud)

配置文件:

我的docker-compose.yml:

version: '3'
services:
  db:
    image: postgres
  redis:
    image: redis:alpine
  web:
    image: nginx
    ports:
     - '80:80'
    volumes:
     - ./deploy/proxy.template:/etc/nginx/conf.d/proxy.template
    links:
     - cdn
     - app
    command: /bin/bash -c "envsubst '' < …
Run Code Online (Sandbox Code Playgroud)

django proxy nginx docker docker-compose

9
推荐指数
1
解决办法
1616
查看次数

标签 统计

django ×1

docker ×1

docker-compose ×1

nginx ×1

proxy ×1