Apache httpd

Apache httpd 是一款快速、生产级别的 HTTP 服务器。当使用 部署到生产环境 中列出的其中一个 WSGI 服务器提供你的应用程序时,通常最好或有必要在它前面放置一个专用的 HTTP 服务器。此“反向代理”可以比 WSGI 服务器更好地处理传入请求、TLS 以及其他安全性和性能问题。

httpd 可以使用你的系统包管理器安装,也可以使用 Windows 的预构建可执行文件安装。安装和运行 httpd 本身不在本文档的讨论范围内。本页概述了配置 httpd 以代理你的应用程序的基本知识。务必阅读其文档以了解可用的功能。

域名

获取和配置域名不在本文档的讨论范围内。通常,你将从注册商处购买域名,向托管提供商支付服务器空间费用,然后将你的注册商指向托管提供商的名称服务器。

若要模拟此过程,你还可以编辑位于 Linux 上的 hosts 文件(位于 /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 标头。 X-Forwarded-ForX-Forwarded-HostProxyPass 自动设置。