首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pydio Cells docker + NGINX = 404错误发生在/ws/chat和/ws/event上

Pydio Cells docker + NGINX = 404错误发生在/ws/chat和/ws/event上
EN

Stack Overflow用户
提问于 2020-07-15 22:19:48
回答 1查看 248关注 0票数 0

我已经使用来自dockerhub的pydio/cells:2.1.1镜像设置了一个Docker容器。

My docker-compose.yaml包含以下部分:

代码语言:javascript
复制
cells:
    image: pydio/cells:2.1.1
    environment:
     - CELLS_NO_TLS=1
     - CELLS_BIND=files.redacted.dev:8080
     - CELLS_EXTERNAL=https://files.redacted.dev
    volumes:
     - /srv/cells:/var/cells
    ports:
     - "8081:8080"
    depends_on:
     - cells_mysql
    restart: unless-stopped

为了将Cells暴露到网络中,我使用了具有以下配置的NGINX:

代码语言:javascript
复制
server {

    client_max_body_size 200M;
    server_name files.redacted.dev;

    location / {
        proxy_buffering off;
        proxy_pass http://localhost:8081$request_uri;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }

    location /ws {
        proxy_buffering off;
        proxy_pass http://localhost:8081;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/files.redacted.dev/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/files.redacted.dev/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = files.redacted.dev) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    server_name files.redacted.dev;

    listen 80;
    listen [::]:80;
    return 404; # managed by Certbot
}

基本上一切正常,但是我注意到,当我创建一个新的文件或文件夹时,我必须在它出现在UI中之前重新加载。

查看火狐的开发控制台,我发现GET、wss://files.redacted.dev/ws/chatwss://files.redacted.dev/ws/event请求出现了404个错误。

我在主机上使用以下命令进行了测试(因此绕过了NGINX):

代码语言:javascript
复制
curl --include --no-buffer --header "Connection: Upgrade" --header "Upgrade: websocket" --header "Host: files.redacted.dev:80" --header "Origin: https://files.redacted.dev" --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" --header "Sec-WebSocket-Version: 13" http://localhost:8081/ws/chat

并且该命令没有终止(我假设这意味着它是成功的…)。

看起来问题出在NGINX的配置上。有人知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-22 21:40:42

最后,它是/ws位置缺少的头文件:

代码语言:javascript
复制
location /ws {
    proxy_buffering off;
    proxy_pass http://localhost:8081;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 86400;
    proxy_set_header Host $host; # This is what was missing!
    proxy_http_version 1.1; # This might also be needed...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62917063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档