【问题标题】:FASTAPI: Only allow requests from an app in another containerFASTAPI:仅允许来自另一个容器中的应用程序的请求
【发布时间】:2021-11-24 18:51:15
【问题描述】:

我不知道什么是微不足道的问题:

我有一个 dockerized FastAPI 服务。它由 2 个容器组成:serviceA 和 serviceB。

我希望 serviceB 仅对 serviceA 可用,而不是对全世界可用。

我试过这个:

from fastapi.middleware.trustedhost import TrustedHostMiddleware


def get_application():
    app = FastAPI(title=server_config.PROJECT_NAME, version=server_config.VERSION)

    app.add_middleware( TrustedHostMiddleware, allowed_hosts=["http://serviceA"] )

    return app


# Connect to DB
app = get_application()

但它不起作用,来自 serviceA 的请求被阻止。我也尝试了 localhost、serviceA:8000 等,但没有任何效果...

有什么想法吗?

【问题讨论】:

    标签: python fastapi


    【解决方案1】:

    您所拥有的是实现它的一种方法,但http://serviceA 不起作用,它需要一个主机名。现在,正如您所提到的,您可能已经尝试过,但这没有用。那是因为它取决于你的机器呈现的样子。确保serviceA 的主机名正确。

    【讨论】:

    • 谢谢!您能否详细说明“确保您拥有正确的主机名”?另外,您是否认为还有其他/更好的方法可以达到相同的结果?
    • 一些快速而肮脏的方法是删除对您拥有的主机的限制,检查标头并找出运行serviceA的容器将自己显示为什么并将主机添加到allowed_hostsserviceB。是的,还有其他方法可以实现您想要做的事情,但这取决于很多事情。你的所作所为并非不合理。只需确保您允许正确的主机名,并在需要时使其可参数化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2018-08-24
    • 1970-01-01
    • 2020-12-29
    • 2020-01-10
    相关资源
    最近更新 更多