You need to enable JavaScript to run this app. Docker微服务间跨服务通信出现403 Forbidden错误如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Docker微服务间跨服务通信出现403 Forbidden错误如何解决?

Docker微服务部署Proxy调用下游服务403错误解决

问题描述

基于微服务架构开发应用,使用docker-compose统一编排所有服务时出现调用异常,docker-compose配置如下:

version: "3"
services:
  frontend:
    build: ./Frontend
    ports:
      - 4200:4200
    links:
      - proxy
  proxy:
    build: ./Proxy
    ports:
      - 8080:8080
    links:
      - foods
  foods:
    build:
      ./FoodMicroService
    container_name:
      foods
    links:
      - database
  database:
    image: postgres
    container_name:
      database
    environment:
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: wildCats

错误表现

前端调用localhost:8080的Proxy服务可正常响应,但Proxy向foods:3001发起GET请求时返回500错误,Proxy服务报错如下:

Completed 500 Internal Server Error in 353ms (ActiveRecord: 0.0ms | Allocations: 3932)
proxy_1     |
proxy_1     |
proxy_1     |
proxy_1     | RestClient::Forbidden (403 Forbidden):

根因与解决方案

该问题由Ruby on Rails框架的主机白名单校验机制触发:Rails 6及以上版本默认开启主机访问白名单,仅允许配置内的主机名访问服务,未在名单内的主机名访问会直接返回403状态码。
修改foods服务的config/environments/development.rb配置文件,添加如下配置即可:

config.hosts << 'foods'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 09:54:02