Apache httpd¶
Apache httpd 是一个快速、可用于生产环境的 HTTP 服务器。当你使用 部署到生产环境 中列出的某个 WSGI 服务器来运行你的应用时,通常建议或有必要在其前面放置一个专用的 HTTP 服务器。这个“反向代理”可以比 WSGI 服务器更好地处理传入请求、TLS 以及其他安全性和性能相关的问题。
httpd 可以使用系统的包管理器安装,或在 Windows 上使用预构建的可执行文件。httpd 本身的安装与运行不在本文档的范围内。本页面仅介绍将 httpd 配置为代理你的应用的基础步骤。请务必阅读其官方文档以了解可用的功能。
域名¶
获取和配置域名不在本文档的范围内。通常,你需要从域名注册商购买一个域名,在主机服务商处购买服务器资源,然后将你的域名指向该主机服务商的服务器。
为了模拟这种情况,你也可以编辑你的 hosts 文件,在 Linux 系统中该文件位于 /etc/hosts。添加一行,将一个名称关联到本地 IP。
现代的 Linux 系统可能已经配置好自动将以 .localhost 结尾的域名当作本地地址,无需将其添加到 hosts 文件中。
/etc/hosts¶127.0.0.1 hello.localhost
配置¶
httpd 的配置文件在 Linux 系统中位于 /etc/httpd/conf/httpd.conf。在其他操作系统中可能有所不同,请查阅相关文档并搜索 httpd.conf。
移除或注释掉现有的 DocumentRoot 指令。添加如下配置行。我们假设 WSGI 服务器在本地监听 http://127.0.0.1:8000。
/etc/httpd/conf/httpd.conf¶LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyPass / http://127.0.0.1:8000/
RequestHeader set X-Forwarded-Proto http
RequestHeader set X-Forwarded-Prefix /
LoadModule 行可能已经存在。如果是,请确保它们没有被注释,而不是手动添加新的。
然后配置 告知 Flask 它运行在代理之后,以便你的应用程序可以使用 X-Forwarded 头部信息。ProxyPass 会自动设置 X-Forwarded-For 和 X-Forwarded-Host。