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 标头。X-Forwarded-ForX-Forwarded-HostProxyPass 自动设置。