需通过nginx反向代理实现qoder服务公网暴露、https访问、负载均衡及路径路由:先安装并启动nginx,再配置upstream指向本地qoder(如127.0.0.1:3000),设置server块监听80端口并透传关键请求头,用certbot自动申请部署tls证书并强制https跳转,最后适配/api、/assets等路径代理与html5 history fallback,配合日志排查502、websocket等常见问题。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您已完成Qoder服务的本地启动,但希望将其暴露于公网并实现HTTPS访问、负载均衡或路径路由,则需通过Nginx作为反向代理进行流量转发。以下是配置Nginx转发Qoder服务的具体操作步骤:
一、安装Nginx并确认基础运行状态
该步骤确保宿主机具备可工作的Nginx服务,为后续代理配置提供运行基础。Nginx需处于活动状态且监听默认端口,避免端口冲突或服务未启用导致代理失败。
1、执行sudo apt update && sudo apt install nginx -y(Ubuntu/Debian)或sudo yum install nginx -y(CentOS/RHEL)完成安装。
2、启动Nginx服务:sudo systemctl start nginx。
3、设置开机自启:sudo systemctl enable nginx。
4、验证服务状态:sudo systemctl is-active nginx,返回active表示正常运行。
5、在浏览器中访问服务器公网IP,确认显示Nginx默认欢迎页,表明HTTP服务已就绪。
二、配置Qoder服务上游代理规则
该步骤定义Nginx如何将外部请求精准转发至Qoder后端服务。需明确Qoder实际监听地址(如127.0.0.1:3000)、启用HTTP/1.1长连接、透传原始客户端信息,防止因头信息丢失导致鉴权异常或Websocket中断。
1、进入Nginx站点配置目录:cd /etc/nginx/sites-available/。
2、创建专用配置文件:sudo nano qoder-proxy.conf。
3、写入以下内容:
upstream qoder_backend {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name qoder.yourdomain.com;
location / {
proxy_pass http://qoder_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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;
}
}
4、启用该配置:sudo ln -sf /etc/nginx/sites-available/qoder-proxy.conf /etc/nginx/sites-enabled/。
5、测试配置语法:sudo nginx -t,输出“syntax is ok”且“test is successful”方可继续。
三、启用HTTPS并自动部署TLS证书
该步骤通过certbot与Nginx深度集成,实现SSL证书的全自动申请、部署与续期,无需手动管理PEM文件。要求域名已完成DNS解析且指向当前服务器IP,并已通过ICP备案(中国大陆必需)。
1、安装certbot及Nginx插件:sudo apt install python3-certbot-nginx -y(Ubuntu/Debian)。
2、执行证书申请命令:sudo certbot --nginx -d qoder.yourdomain.com。
3、按提示选择重定向选项(推荐选2,强制HTTPS),certbot将自动修改Nginx配置并重载服务。
4、验证HTTPS生效:curl -I https://qoder.yourdomain.com,响应头中应含HTTP/2 200及有效证书信息。
5、确认自动续期任务已注册:sudo systemctl list-timers | grep certbot,应显示每周两次定时检查。
四、适配Qoder特定路径与静态资源代理
该步骤解决Qoder WebUI中前端路由(如React Router)刷新404、静态资源加载失败等问题。需显式声明/assets、/api等关键路径的代理行为,并对非API路径启用HTML5 History模式fallback。
1、编辑已创建的qoder-proxy.conf文件,替换原有location /块为以下内容:
location / {
proxy_pass http://qoder_backend;
proxy_redirect off;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://qoder_backend/api/;
proxy_set_header Host $host;
}
location /assets/ {
proxy_pass http://qoder_backend/assets/;
expires 1h;
add_header Cache-Control "public, immutable";
}
2、保存后执行sudo nginx -t验证语法。
3、重载Nginx使配置生效:sudo systemctl reload nginx。
4、访问https://qoder.yourdomain.com/app/settings,刷新页面确认无404错误,说明前端路由已被正确接管。
五、调试与日志排查关键点
该步骤聚焦常见转发异常的定位方法,通过Nginx错误日志、代理响应头与Qoder服务日志交叉比对,快速识别是网络层、协议层还是应用层问题。
1、实时查看Nginx错误日志:sudo tail -f /var/log/nginx/error.log。
2、检查Qoder服务是否真实响应:curl -v http://127.0.0.1:3000/health,应返回HTTP 200及{"status":"ok"}。
3、验证代理响应头是否含X-Proxy-By: nginx字段,确认请求确实经过Nginx。
4、若出现502 Bad Gateway,检查Qoder进程是否运行:sudo systemctl status qoder.service 或 ps aux | grep node。
5、若WebSocket连接失败,在Nginx配置中确认location /块内已包含proxy_set_header Upgrade $http_upgrade与proxy_set_header Connection 'upgrade'两行。











