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

Docker部署的Node-RED通过Nginx反向代理无法访问求助

解决Node-RED反向代理访问报错问题

问题原因

当前Nginx配置会把/tools路径直接转发给Node-RED,但Node-RED默认在根路径/下提供服务,无法识别/tools路径,因此返回Cannot GET /tools错误。

解决方案一:修改Nginx配置(推荐,无需改动Node-RED)

调整location /tools块的配置,通过路径重写将请求转发到Node-RED的根路径,同时补充必要的代理头:

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  page.com;
        root         /usr/share/nginx/html;

        include /etc/nginx/default.d/*.conf;

        location /tools {
                proxy_pass http://serverhostname:5322/;  # 末尾添加斜杠
                proxy_set_header Host $http_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;
                # 重写路径,去除/tools前缀
                rewrite ^/tools(.*)$ $1 break;
        }
}

说明:

  • proxy_pass末尾加斜杠,会把/tools后的路径追加到目标地址的根路径后
  • rewrite规则将/tools/xxx转换为/xxx再转发给Node-RED
  • 额外的代理头能让Node-RED正确识别客户端来源信息

修改后重启Nginx生效:

sudo systemctl restart nginx

解决方案二:修改Node-RED服务路径

若不想改动Nginx,可调整Node-RED配置,让它直接在/tools路径下运行:

  1. 进入Node-RED容器:
docker exec -it nodered bash
  1. 编辑/data/settings.js文件,找到httpAdminRoot配置项,修改为:
httpAdminRoot: '/tools',
  1. 保存文件后退出容器,重启Node-RED:
docker restart nodered

此时保持原有Nginx配置不变,访问http://page.com/tools即可正常进入UI。

验证

修改完成后,访问http://page.com/tools,确认Node-RED管理界面正常加载,同时检查页面内的CSS、JS等静态资源是否能正常获取,避免样式或功能异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:26:09