Python 中如何快速启动一个 HTTP 服务器?
Python 一行命令启动静态文件服务器:python3 -m http.server 8000。本文介绍命令行用法、指定端口/目录、编程方式及安全提醒。
一行命令:python3 -m http.server(默认 8000 端口),把当前目录作为静态文件站点共享出去,浏览器访问 http://localhost:8000 即可。适合临时分享文件或本地调试前端页面。
命令行方式
cd /path/to/my/project
python3 -m http.server --bind 127.0.0.1 # 本地调试,默认8000端口
python3 -m http.server 8080 # 指定端口
python3 -m http.server -d /srv/files # 指定目录(3.7+)
python3 -m http.server -b 0.0.0.0 # 允许局域网访问(未指定--bind时默认监听所有接口)
编程方式
from http.server import HTTPServer, SimpleHTTPRequestHandler
server = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
print("服务运行在 http://localhost:8000")
server.serve_forever()
重要安全提醒
http.server 只是开发/临时工具:
- 现代命令行入口使用线程服务器;上面的 HTTPServer 编程例则为单线程;
- 不提供生产所需的完整访问控制;可暴露目录内容,还会跟随符号链接访问目录外文件;
- 不要用于生产环境,生产用 Nginx、Caddy 或正式 WSGI/ASGI 服务器。
常见问题(FAQ)
Q:能支持 HTTPS 吗?
A:Python 3.14 起提供 HTTPS 服务器与命令行 TLS 选项;旧版本需编程配置 SSL context 或前置代理;临时测试可以用 mkcert + 几行代码,或直接上 Caddy。
Q:如何后台运行?
A:nohup python3 -m http.server 8000 &,或配 systemd service。长期共享文件建议还是用 Nginx。
Q:POST 上传支持吗?
A:SimpleHTTPRequestHandler 只支持 GET/HEAD。需要上传或 API 功能用 Flask/FastAPI 写个简单服务。