【问题标题】:Docker can't connect to Websocket PHPDocker 无法连接到 Websocket PHP
【发布时间】:2020-09-29 03:16:56
【问题描述】:

我无法使用 Docker 容器连接到 WebSocket

我的 docker-compose.yml:

`
 version: "2"
 services:
db:
    image: mysql
    ports:
        - 3306:3306
    volumes:
        - "./.data/db:/var/lib/mysql"
    environment:
        MYSQL_ROOT_PASSWORD: "qwerty"
        MYSQL_DATABASE: "web_face"
        MYSQL_USER: "web_face"
        MYSQL_PASSWORD: "qwerty"
php:
    build: php7-fpm
    ports:
        - 9000:9000
        - 3333:3333
    links:
        - db:mysqldb
    volumes:
        - ../www/:/var/www/symfony
        - ../logs/symfony:/var/www/symfony/app/logs
        - ../logs/php:/data/log/phpfpm/
nginx:
    build: nginx
    ports:
        - 80:80
    links:
        - php
    volumes_from:
        - php
    volumes:
        - ../logs/nginx/:/var/log/nginx

但是当我尝试连接 Rachet Websocket 服务器时出现错误: WebSocket 连接到“ws://127.0.0.1/”失败:WebSocket 握手期间出错:意外响应代码:200

【问题讨论】:

    标签: symfony docker websocket containers


    【解决方案1】:

    您是否更改了 nginx 配置以正确处理 websocket 握手?

    您需要类似以下的配置:

    server {
        listen       80;
    
        upstream websocket {
            server php:9000;
        }    
    
        location / {
            proxy_pass      http://websocket;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
    
            proxy_connect_timeout 7d;
            proxy_send_timeout 7d;
            proxy_read_timeout 7d;
        }
    }
    

    您可以在nginx documentation了解更多信息

    【讨论】:

      猜你喜欢
      • 2016-08-22
      • 2015-11-10
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多