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-For
和 X-Forwarded-Host
由 ProxyPass
自动设置。