iis 无法从子网访问在Windows Server 2016上运行的FastAPI服务器

rqenqsqc  于 2023-10-19  发布在  Windows
关注(0)|答案(1)|浏览(188)

我有一个在Windows Server 2016上运行的Fast API Web服务器(在poetry env shell中)。我试着从另一个服务器上攻击它,但是在同一个子网里。它超时了。但我可以在本地击中它。
同样,我正在运行一个Apache Web服务器python3 -m http.server 8000,我可以成功地击中它。
为什么我能够访问简单的http.服务器而不是FastAPI(Uvicorn)服务器?
Windows Server 2016正在运行IIS。
我的FastAPI main.py文件

from fastapi import FastAPI, APIRouter
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

@app.get('/')
def health():

    return {
        "Status": "Success",
        "Message": "Server running"
    }

启动命令-uvicorn main:app --reload --port 8000。在一个诗歌环境shell中运行它。

gg58donl

gg58donl1#

使用Uvicorn启动FastAPI服务器时,请检查Uvicorn绑定地址。默认情况下,Uvicorn绑定到127.0.0.1(localhost)。请确保它绑定到服务器的IP地址或0.0.0.0,以允许从其他计算机连接。
启动Uvicorn时,可以指定--host参数绑定到特定的IP地址。举例来说:

uvicorn main:app --reload --host 0.0.0.0 --port 8000

相似线程:How to access FastAPI backend from a different machine/IP on the same local network?

相关问题