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

使用Nginx无法将请求从一个容器代理到另一个容器

问题解决步骤

1. 确保Rust服务监听正确地址

Rust Warp服务默认可能仅绑定到127.0.0.1,导致其他容器无法访问。修改Rust代码,让服务监听0.0.0.0:8000:

use warp::Filter;

#[tokio::main]
async fn main() {
    let hello = warp::path!("hello" / String)
        .map(|name| format!("Hello, {}!", name));

    warp::serve(hello)
        .run(([0, 0, 0, 0], 8000)) // 改为0.0.0.0允许容器外部访问
        .await;
}

重新构建并启动Rust服务容器。

2. 修正Nginx代理配置

你的Nginx配置未正确设置转发规则。创建或修改./nginx/nginx.conf.prod为以下内容:

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://rust-warp:8000;
        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;
    }
}

该配置会将所有80端口的请求转发到Docker Compose网络内的rust-warp服务8000端口。

3. 验证Nginx配置有效性

进入Nginx容器检查配置语法:

docker exec -it rust-warp-nginx nginx -t

若输出test is successful,则配置无误,重启Nginx容器生效:

docker restart rust-warp-nginx

4. 测试代理连通性

访问http://localhost,此时应显示Rust API的返回内容而非Nginx默认页面。若仍有问题:

  • 检查Rust服务日志是否收到请求
  • 在Nginx容器内测试与Rust服务的连通性:
    docker exec -it rust-warp-nginx curl http://rust-warp:8000
    

若curl能返回API内容,说明网络连通正常,问题可能出在浏览器缓存或Nginx配置重载不彻底。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 23:02:02