问题一:
项目部署好了之后,前端发起请求,页面显示出来了,但是接口请求失败,浏览器控制台接口地址显示http://127.0.0.1:6050/api/xxx
不正常,而且这是部署后最常见、也最致命的一个错误之一。
你现在这个现象 100% 能定位到问题点,我直接给你结论 + 改法。
一句话结论(先看)
❌ 浏览器里看到
http://127.0.0.1:6050是绝对错误的✅ 浏览器永远不应该直接访问后端容器端口
一、为什么 127.0.0.1 在浏览器里是错的?
你现在看到的是:
http://127.0.0.1:6050/api/xxx
对浏览器来说:
127.0.0.1= 用户自己的电脑- 不是服务器
- 不是 Ubuntu
- 不是 Docker
👉 浏览器在尝试访问:
你自己电脑的 6050 端口
当然失败 ❌
二、正确的访问方式应该是什么?
正确架构是:
浏览器
↓
http://oa.jt-ele.com:9527/api/xxx
↓
Nginx
↓
http://127.0.0.1:6050(服务器内部)
↓
Koa
👉 127.0.0.1 只能出现在 Nginx 配置里
👉 绝对不能出现在前端代码里
三、你现在问题的根因(99% 就是这个)
你前端里很可能写了👇
axios.create({
baseURL: 'http://127.0.0.1:6050'
});
或者:
axios.get('http://127.0.0.1:6050/api/xxx');
👉 这是 本地开发写法,被你带到生产环境了
四、正确 & 标准的前端写法(你照抄)
✅ 写法 1:相对路径(最推荐)
const api = axios.create({
baseURL: '/api'
});
请求:
api.get('/xxx');
浏览器真实请求地址是:
http://oa.jt-ele.com:9527/api/xxx
✅ 写法 2:用环境变量区分环境
const baseURL =
process.env.NODE_ENV === 'development'
? 'http://127.0.0.1:6050'
: '/api';
const api = axios.create({ baseURL });
五、Nginx 必须有对应的反向代理
你服务器上 一定要有这个:
location /api/ {
proxy_pass http://127.0.0.1:6050;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
👉 浏览器永远只打 /api
👉 Nginx 再转给 127.0.0.1:6050
六、部署后你应该看到的「正确现象」
浏览器 DevTools → Network
| 项目 | 正确 |
|---|---|
| Request URL | http://oa.jt-ele.com:9527/api/xxx |
| 是否出现 127 | ❌ 不应该 |
| 是否跨域 | ❌ 没有 |
| Response | ✅ 200 |
七、一步一步帮你快速自查(5 分钟内解决)
1️⃣ 搜索前端代码
grep -R "127.0.0.1" .
grep -R "6050" .
2️⃣ 改成 /api
3️⃣ 重新 build
npm run build
4️⃣ 覆盖服务器 build 目录
5️⃣ 刷新页面(Ctrl + F5)
八、这是一个“是否真正理解部署”的分水岭
你能问到这个问题,说明你已经走到:
❌「本地开发思维」
→ ✅「生产环境架构思维」
记住一句话就够了:
浏览器永远不直连后端端口,只连 Nginx
问题二
改了之后浏览器的请求地址变成oa.xx-xxx.com:9527/ecTranslati…
你现在的请求地址是:
http://oa.jt-ele.com:9527/ecTranslationApi/translateText
报了 404,而你 Koa 是跑在 Docker 容器里的 6050 端口。
✅ 我可以直接告诉你:这个问题不是 Docker 端口映射的原因
因为你 Nginx 代理到 localhost:6050,Docker 的端口已经映射出来了(6050:6050),这没问题。
🔥 真正的原因有两个可能(90% 是第一个):
🚨 原因 1:Nginx 的代理路径没配置好(最常见)
你前端请求的是:
/ecTranslationApi/translateText
那 Nginx 中必须有这个配置👇:
location /ecTranslationApi/ {
proxy_pass http://127.0.0.1:6050;
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;
}
✅ 注意最后面的 /,非常关键!
如果你写的是:
location /ecTranslationApi {
proxy_pass http://127.0.0.1:6050;
}
那么路径会拼接错误,导致变成:
请求:/ecTranslationApi/translateText
变成:/translateText → 代理为 http://localhost:6050ecTranslationApi/translateText
➡️ 直接导致 404
✅ 正确写法:保持路径不变
location /ecTranslationApi/ {
proxy_pass http://127.0.0.1:6050/;
}
两个 / 都保留,含义是:
保持
/ecTranslationApi/translateText不变,原样转发到localhost:6050/ecTranslationApi/translateText
或者 ✅ 清除前缀再转发(推荐)
如果你的后端 Koa 实际路径是 /translateText(不带 /ecTranslationApi 前缀),那么 Nginx 就要“去掉前缀”再转发:
location /ecTranslationApi/ {
proxy_pass http://127.0.0.1:6050/;
rewrite ^/ecTranslationApi/(.*)$ /$1 break;
}
🔁 效果:
请求:/ecTranslationApi/translateText
重写 → /translateText
转发给后端 http://localhost:6050/translateText
🚨 原因 2:Koa 代码路由没注册 /translateText
检查你的 Koa 代码里有没有像这样👇:
router.post('/translateText', async (ctx) => {
// ...
});
或者:
router.prefix('/ecTranslationApi'); // 如果你用了 prefix
router.post('/translateText', ...) // 那就等于 /ecTranslationApi/translateText
🧠 所以你要弄清楚两点:
| 请求路径 | 由谁决定 |
|---|---|
| 前端请求的路径 | axios/baseURL 设置决定 |
| 实际后端能处理的路径 | Koa 路由注册的路径决定 |
| 中间桥梁 | Nginx 是否转发对了 |
✅ 建议最终方案(最清晰、推荐使用)
- 前端:请求
/ecTranslationApi/translateText - Nginx:把
/ecTranslationApi/*转发给 Koa(去掉前缀) - Koa:只处理
/translateText
🔧 Nginx 示例(推荐)
location /ecTranslationApi/ {
rewrite ^/ecTranslationApi/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:6050/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
✅ 快速排查建议(确保解决)
- ✅
nginx -t检查配置 - ✅
nginx -s reload应用配置 - ✅ 浏览器请求是否发给了
/ecTranslationApi/translateText - ✅ 后端 Koa 有没有注册这个接口
- ✅ Docker 容器有没有正常跑起来
- ✅ Koa 控制台有没有日志打印(是否收到请求)
🔚 总结一句话:
404 不一定是 Docker 的问题,多数是 Nginx 的
proxy_pass或路径转发没配对 Koa 的路由。
curl报错curl http://127.0.0.1:6050/ecTranslationApi/translateText
这个 curl 本身就已经把问题暴露得很清楚了 👍
我直接帮你精准定位 + 给出正确的验证方式。
先给结论(非常重要)
❌
curl http://127.0.0.1:6050/ecTranslationApi/translateText
这个命令 99% 是错的
✅
curl http://127.0.0.1:6050/translateText
这个才是你后端真正应该存在的接口
一、为什么你现在这个 curl 一定会报错?
关键认知点(一定要记住)
/ecTranslationApi是给「Nginx 用的前缀」
不是给 Koa 用的
你的真实链路应该是:
浏览器
↓
/ecTranslationApi/translateText (给 Nginx 看)
↓
Nginx rewrite / proxy
↓
/translateText (给 Koa 看)
二、你现在 curl 的问题在哪里?
你执行的是:
curl http://127.0.0.1:6050/ecTranslationApi/translateText
这相当于:
绕过 Nginx,直接敲 Koa
但 Koa 根本就没有
/ecTranslationApi/translateText这个路由
所以结果只能是:
404 Not Found- 或
Cannot GET /ecTranslationApi/translateText
这是完全正常的错误
三、正确的排查方式(一步一步)
✅ 第一步:确认 Koa 实际监听的接口
看你 Koa 代码里有没有类似👇
router.post('/translateText', async (ctx) => {
ctx.body = 'ok';
});
如果是这样,那你在服务器上直接 curl:
curl http://127.0.0.1:6050/translateText
👉 如果这个 能通
👉 说明 Docker + Koa + 端口 6050 完全没问题
❌ 如果你非要 curl 带前缀的地址
那你只能 curl Nginx 的端口,而不是 6050:
curl http://127.0.0.1:9527/ecTranslationApi/translateText
(9527 是你的 Nginx 监听端口)
四、Nginx 正确配置必须是下面这样之一
✅ 写法一:去掉前缀(推荐、最清晰)
location /ecTranslationApi/ {
rewrite ^/ecTranslationApi/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:6050;
}
对应关系:
| 外部请求 | 转给 Koa |
|---|---|
| /ecTranslationApi/translateText | /translateText |
✅ 写法二:Koa 本身就有前缀(不推荐)
Koa:
router.prefix('/ecTranslationApi');
router.post('/translateText', ...)
Nginx:
location /ecTranslationApi/ {
proxy_pass http://127.0.0.1:6050;
}
五、你现在应该这样验证(照做)
1️⃣ 验证 Koa(不经过 Nginx)
curl http://127.0.0.1:6050/translateText
- ❌ 不通 → Koa 路由或容器有问题
- ✅ 通 → 后端 OK
2️⃣ 验证 Nginx → Koa
curl http://127.0.0.1:9527/ecTranslationApi/translateText
- ❌ 不通 → Nginx rewrite / proxy 配置问题
- ✅ 通 → 全链路 OK
六、Docker 端口问题?👉 不是
你现在的映射:
ports:
- "6050:6050"
这是完全正确的,而且从你能 curl 到 6050 来看:
- Docker ✅
- 端口 ✅
- 容器运行 ✅
问题只在「路径」
七、一句话帮你彻底记住
6050 端口只接受「Koa 原生路由」
/ecTranslationApi只存在于 Nginx 层
koa就是这么写的router.post("/ecTranslationApi/translateText", translateText);
一、现在为什么一定 404(核心原因)
你现在的 Koa 路由是这样写的:
router.post("/ecTranslationApi/translateText", translateText);
而你现在的 Nginx 很可能是“去掉前缀再转发”那种写法(这是我前面推荐你的)。
于是就出现了 路径不一致 👇
实际发生的事情是:
浏览器请求
/ecTranslationApi/translateText
↓
Nginx rewrite
/translateText
↓
转给 Koa
但 Koa 实际只认这个路径:
/ecTranslationApi/translateText
👉 于是:404(完全对得上)
二、你现在有两条路可以选(任选其一)
⭐ 我会标出「推荐程度」
✅ 方案一(⭐最推荐):前缀只放在 Nginx,不放在 Koa
1️⃣ 改 Koa 路由(非常关键)
👉 去掉 /ecTranslationApi 前缀
router.post("/translateText", translateText);
2️⃣ Nginx 负责前缀 + 转发(标准网关模式)
location /ecTranslationApi/ {
rewrite ^/ecTranslationApi/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:6050;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
3️⃣ 结果映射关系(非常清晰)
| 层级 | 路径 |
|---|---|
| 浏览器 | /ecTranslationApi/translateText |
| Nginx → Koa | /translateText |
| Koa 路由 | /translateText |
✅ curl
curl http://127.0.0.1:6050/translateText
✅ 浏览器
http://oa.jt-ele.com:9527/ecTranslationApi/translateText
👉 这是生产环境最推荐的写法
⚠️ 方案二(不推荐但可用):前缀在 Koa,Nginx 不 rewrite
如果你 坚持 Koa 里写完整前缀,那就必须保证:
1️⃣ Koa(保持你现在的写法)
router.post("/ecTranslationApi/translateText", translateText);
2️⃣ Nginx 绝对不能 rewrite
location /ecTranslationApi/ {
proxy_pass http://127.0.0.1:6050;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
3️⃣ 对应 curl / 访问方式
curl http://127.0.0.1:6050/ecTranslationApi/translateText
http://oa.jt-ele.com:9527/ecTranslationApi/translateText
⚠️ 缺点:
- 前缀耦合在代码里
- 将来换网关、换路径、做多服务会很痛苦
三、为什么我强烈推荐「方案一」
一句话总结:
Nginx = API 网关,Koa = 纯业务服务
好处:
- Koa 不关心部署路径
- 本地 / Docker / 生产 路由完全一致
- 以后加
/api、/v1、/v2不用改后端代码
这是所有成熟公司都用的方式
四、你现在该怎么做(按这个顺序)
✅ 正确操作顺序
1️⃣ 把 Koa 改成:
router.post("/translateText", translateText);
2️⃣ 确认 Nginx 有 rewrite
3️⃣ 重启 Docker 容器(非常重要)
docker compose down
docker compose up -d --build
4️⃣ reload Nginx
nginx -t
nginx -s reload
5️⃣ 测试
curl http://127.0.0.1:6050/translateText
curl http://127.0.0.1:9527/ecTranslationApi/translateText
五、一句话给你“定心丸”
你现在这个问题
不是 Docker、不是端口、不是 SQL Server👉 只是「Nginx 路径 和 Koa 路由 没对齐」
这一步你跨过去了,部署基本就通关了。
root@kaifa:/etc/nginx/conf.d# curl -X POST -d "from=auto&text=美国&to=en" http://127.0.0.1:6050/ecTranslationApi/translateText curl: (7) Failed to connect to 127.0.0.1 port 6050 after 0 ms: Couldn't connect to server
好,这条 curl 的报错信息量非常大,而且已经把问题范围缩到只剩 2 种可能了。
我一步一步帮你精准定位。
先看错误本身(非常关键)
curl: (7) Failed to connect to 127.0.0.1 port 6050
Couldn't connect to server
👉 这不是 404
👉 这是 TCP 连接都没建立成功
也就是说:
❌ 在宿主机上,127.0.0.1:6050 根本没有任何服务在监听
这一步还没轮到 Nginx / 路由 / Koa 接口,问题在更前面。
一句话结论(先给)
❌ 你现在这个问题
不是/ecTranslationApi/translateText路径问题✅ 是:
Docker 容器里的 Koa 服务没有对宿主机 6050 提供服务
下面我们用「排查树」来定位(你跟着做)
一、先确认:Docker 容器到底在不在跑?
1️⃣ 查看容器状态
docker ps
你应该看到类似:
CONTAINER ID IMAGE PORTS NAMES
abcd1234 koa-backend 0.0.0.0:6050->6050/tcp koa-backend
❌ 如果你看到的是:
- 没有这个容器
- 或
PORTS一栏是空的
👉 那说明 容器没起来 / 端口没映射
二、如果容器在跑,重点看「端口映射」
2️⃣ 查看端口映射(非常关键)
docker inspect koa-backend | grep -A 5 Ports
你必须看到:
"Ports": {
"6050/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "6050"
}
]
}
❌ 如果是 null 或没有 HostPort
👉 说明你 没写 ports:,或者写错了
三、最容易被忽略的一点(90% 的坑)
🚨 Koa 监听的端口 ≠ Docker 映射的端口
你 Dockerfile / compose 里是:
ports:
- "6050:6050"
但 Koa 代码里如果是这样:
app.listen(8989);
那结果一定是:
宿主机 6050 → 容器 6050(没人监听) ❌
✅ Koa 正确写法必须是:
const port = process.env.PORT || 6050;
app.listen(port, () => {
console.log('koa listen on', port);
});
并且 Docker 里:
ENV PORT=6050
四、直接在容器里验证(最权威)
3️⃣ 进入容器
docker exec -it koa-backend sh
(或 bash)
4️⃣ 在容器内部 curl 自己
curl http://127.0.0.1:6050/translateText
- ✅ 能通 → Koa 是好的,问题在端口映射
- ❌ 不通 → Koa 根本没在 6050 上 listen
五、你这个 curl 命令本身还有一个问题(顺便指出)
你现在 curl 的是:
curl -X POST -d "from=auto&text=美国&to=en" \
http://127.0.0.1:6050/ecTranslationApi/translateText
但在我们推荐的正确架构下:
- 6050 上的 Koa 不应该有
/ecTranslationApi前缀 - 所以正确的应该是:
curl -X POST -d "from=auto&text=美国&to=en" \
http://127.0.0.1:6050/translateText
六、正确的「验证顺序」(照这个来,一定能通)
✅ Step 1:容器内
docker exec -it koa-backend curl http://127.0.0.1:6050/translateText
✅ Step 2:宿主机直连容器
curl http://127.0.0.1:6050/translateText
✅ Step 3:通过 Nginx
curl http://127.0.0.1:9527/ecTranslationApi/translateText
只要 Step 1 不通,其它都不可能通。
七、99% 的最终修复方案(你很可能就是这个)
1️⃣ Koa
const port = process.env.PORT || 6050;
app.listen(port);
2️⃣ Dockerfile
ENV PORT=6050
EXPOSE 6050
3️⃣ docker-compose
ports:
- "6050:6050"
4️⃣ 重建(不是 restart)
docker compose down
docker compose up -d --build
docker exec命令报错Error response from daemon: Container c0089ce9d5d49eca253750eb456cc979770ca6269d7db4df9327a2aa0a16eb69 is restarting, wait until the container is running
这个报错非常关键,而且已经把问题100% 定位清楚了。
我先给你结论,再一步一步教你怎么“止血 + 修好”。
一句话结论(先看)
❌ 不是端口 / Nginx / curl 的问题
✅ 是你的 Koa 容器在不断崩溃(crash)→ Docker 一直重启
所以你现在看到的是:
Container ... is restarting
👉 容器根本没活起来
👉 自然 6050 端口没人监听
👉 所有 curl 都失败
一、为什么容器会一直 restarting?
Docker 只有一种情况会这样做:
容器里的主进程退出了(Node 程序直接崩了)
常见原因(按概率):
🔥 Top 5 常见原因(你很可能是其中之一)
- ❌ Node 启动时报错(代码语法 / require 模块失败)
- ❌ 数据库连接失败,程序直接 throw
- ❌
PORT没取到,app.listen(undefined) - ❌ 入口文件写错(
CMD ["node", "app.js"],但根本没 app.js) - ❌ 环境变量没配,代码一启动就用到了
二、现在唯一正确的排查入口
❗ 不要 exec,不要 curl
👉 先看容器日志
1️⃣ 看崩溃日志(最重要)
docker logs c0089ce9d5d4 --tail=100
或者:
docker logs koa-backend --tail=100
你一定会看到类似:
Error: Cannot find module 'xxx'
Error: listen EADDRINUSE
Error: connect ECONNREFUSED
TypeError: Cannot read properties of undefined
👉 把这一段完整报错贴出来
👉 这就是“判决书”
三、在你贴日志之前,我先给你 2 个「必修检查项」
你可以立刻对一下。
✅ 检查 1:Koa 是否真的监听了 PORT
你的 Koa 代码必须是下面这种👇
const port = process.env.PORT || 6050;
app.listen(port, () => {
console.log('server listening on', port);
});
❌ 下面这种 在 Docker 里必炸:
app.listen(serverConfig.config.apiPort); // 本地配置
✅ 检查 2:Dockerfile 的入口文件是否正确
Dockerfile 里必须是 真实存在的文件名:
CMD ["node", "index.js"]
如果你项目里叫的是:
app.jsserver.jsmain.js
👉 CMD 必须一模一样
四、90% 的真实案例(你很可能是这个)
💣 场景:数据库连不上 → Node 直接崩
你代码里有大量:
await mysql.createConnection(...)
await sql.connect(...)
如果:
- DB_HOST 写错
- SQL Server 容器没启动
- 网络不通
👉 Node 在启动阶段直接 throw
👉 Docker 认为“进程结束”
👉 立刻 restart
✅ 正确姿势(防崩)
async function start() {
try {
// db connect
app.listen(port);
} catch (err) {
console.error('startup failed:', err);
process.exit(1); // 明确失败
}
}
start();
五、现在你马上要做的 3 步
🔴 第 1 步(最重要)
docker logs koa-backend --tail=200
把 完整报错贴出来(不要截断)
🟡 第 2 步(顺手做)
docker ps -a
看看状态是不是:
Restarting (1) ...
🟢 第 3 步(确认入口)
把下面这段贴出来:
app.listen(...)
六、你现在其实已经接近成功了
到目前为止,我们已经排除了:
- ❌ 前端地址问题
- ❌ Nginx 配置问题
- ❌ 路由前缀问题
- ❌ Docker 端口问题
现在只剩 一件事:
Node 程序为什么一启动就死
这一步解决了:
docker exec能进curl 127.0.0.1:6050能通- 浏览器立刻恢复正常
真的报错了root@kaifa:/opt/ec-translation# docker logs ec-translation-backend-1 --tail=100 at Module._load (node:internal/modules/cjs/loader:1227:37) at TracingChannel.traceSync (node:diagnostics_channel:328:14) at wrapModuleLoad (node:internal/modules/cjs/loader:245:24) at Module.require (node:internal/modules/cjs/loader:1504:12) at require (node:internal/modules/helpers:152:16) at Object. (/app/server/server.js:3:16) at Module._compile (node:internal/modules/cjs/loader:1761:14) { code: 'MODULE_NOT_FOUND', requireStack: [ '/app/server/server.js' ] } Node.js v24.12.0 node:internal/modules/cjs/loader:1424 throw err; ^ Error: Cannot find module '@koa/multer'
太好了,这个日志一出来,问题已经 100% 锁死,而且是一个非常“标准”的 Docker + Node 坑。
我直接给你结论 → 原因 → 立刻可用的修复方案。
一句话结论(先看)
❌ 容器一直重启的根因是:
👉
@koa/multer这个依赖 在 Docker 镜像里不存在👉 Node 启动第一行
require('@koa/multer')就直接崩
👉 Docker 认为主进程退出 → 不断 restart
所以现在的现象 完全符合预期:
docker exec进不去(因为容器没活)127.0.0.1:6050连接不上- Nginx / 前端都没问题
二、日志已经把“犯罪证据”写得很清楚了
关键报错是这一行 👇
Error: Cannot find module '@koa/multer'
Require stack:
- /app/server/server.js
也就是说:
// server.js 第 3 行
const multer = require('@koa/multer');
👉 Node 在容器里找不到这个包
三、为什么「本地能跑,Docker 里却不行」?
这是 Docker 新手 最常见 Top 1 问题。
原因只有一个:
你的 Docker 镜像里,没有安装这个依赖
通常是以下 2 种情况之一(甚至两个都有):
❌ 情况 1:你本地装过,但 package.json 里没有
你本地可能执行过:
npm install @koa/multer
但当时用的是:
npm install @koa/multer --no-save
或者你根本没注意 package.json
👉 Docker 只会按 package.json 安装
👉 它不会“继承你本地 node_modules”
❌ 情况 2:Dockerfile 安装的是 --production
你 Dockerfile 很可能是这样 👇
RUN npm install --production
而 @koa/multer 被你放在了:
"devDependencies": {
"@koa/multer": "..."
}
👉 production 模式不会装 devDependencies
👉 直接缺包
四、立刻修复(按我给的顺序来,100% 解决)
✅ Step 1:确认 package.json 里有没有它
在你项目根目录:
cat package.json | grep multer
你必须看到类似:
"dependencies": {
"@koa/multer": "^3.x.x"
}
❌ 如果在 devDependencies
👉 必须挪到 dependencies
✅ Step 2:正确安装依赖(非常关键)
在本地项目目录执行:
npm install @koa/multer --save
然后确认:
cat package.json | grep multer
✅ Step 3:确认 Dockerfile(推荐写法)
FROM node:18-alpine # 不要用 node:24,太新,坑多
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
ENV NODE_ENV=production
ENV PORT=6050
EXPOSE 6050
CMD ["node", "server/server.js"]
⚠️ 几个重点:
- ❌ 不要
--production(你现在阶段) - ❌ 不要用
node:24 - ✅ 用 LTS(18 / 20)
✅ Step 4:彻底重建(不是 restart)
docker compose down
docker compose build --no-cache
docker compose up -d
👉 --no-cache 非常重要,否则还是旧镜像
五、重建后你应该看到什么(成功标准)
1️⃣ 容器状态
docker ps
✅ 状态是:
Up xx seconds
❌ 不再是 Restarting
2️⃣ 日志里有 listen 信息
docker logs ec-translation-backend-1
你应该看到类似:
server listening on 6050
3️⃣ curl 能通
curl http://127.0.0.1:6050/translateText
(如果是 POST,再带参数)
4️⃣ Nginx 通
curl http://127.0.0.1:9527/ecTranslationApi/translateText