You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker-Compose部署Vaultwarden时Nginx无法代理静态文件(404错误)

问题排查与解决:Vaultwarden静态文件404错误

核心问题分析

你的Nginx配置里的try_files $uri $uri/ =404;指令是导致静态文件加载失败的关键:这个指令会让Nginx优先在本地服务器的root /opt/vault;目录下查找静态文件,而非将请求转发到Vaultwarden容器。但静态文件实际存放在容器内部,Nginx本地找不到对应文件,就直接返回404。同时缺少必要的代理请求头,可能导致Vaultwarden生成的静态文件路径不正确,进一步加剧加载问题。

修复步骤

1. 修改Nginx配置文件

更新HTTPS服务器块配置,移除错误指令并添加必要代理头,同时补充WebSocket支持(配合容器已开启的WEBSOCKET_ENABLED=true):

# HTTPS configuration
server {
    # SSL configuration
    listen [::]:443 ssl default_server ipv6only=on;
    listen 443 ssl default_server;

    ssl_certificate /etc/letsencrypt/live/bw.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/bw.example.com/privkey.pem;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    include /etc/letsencrypt/options-ssl-nginx.conf;

    server_name bw.example.com;
    # 移除本地root目录,不需要Nginx提供本地文件服务
    # root /opt/vault;

    location / {
        proxy_pass http://localhost:8732;
        # 添加代理头,确保Vaultwarden识别真实请求信息
        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-Proto $scheme;
    }

    # WebSocket通知支持
    location /notifications/hub {
        proxy_pass http://localhost:8732/notifications/hub;
        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-Proto $scheme;
        # WebSocket协议需要的升级头
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /notifications/hub/negotiate {
        proxy_pass http://localhost:8732/notifications/hub/negotiate;
        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-Proto $scheme;
    }
}

# HTTP config
server {
    if ($host = bw.example.com) {
        return 301 https://$host$request_uri;
    }

    listen 80 default_server;
    listen [::]:80 default_server;

    server_name bw.example.com;
    return 404;
}

2. 重启Nginx服务

执行命令验证配置有效性并重启服务:

sudo nginx -t && sudo systemctl restart nginx

3. 验证修复结果

访问你的Vaultwarden域名,检查浏览器控制台是否还存在静态文件404错误,确认页面样式、脚本和图片正常加载即可。

内容的提问来源于stack exchange,提问作者Taras Paslavskyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:24:20