nginx

nginx 是一个快速、可用于生产环境的 HTTP 服务器。当你使用 部署到生产环境 中列出的某个 WSGI 服务器来运行你的应用时,通常建议或有必要在其前面放置一个专用的 HTTP 服务器。这个“反向代理”可以比 WSGI 服务器更好地处理传入请求、TLS 以及其他安全和性能相关的问题。

可以使用系统的包管理器安装 Nginx,或者在 Windows 上使用预构建的可执行文件。Nginx 本身的安装与运行不在本文档的范围内。本页面仅介绍配置 Nginx 来代理你的应用的基础步骤。请务必阅读它的官方文档以了解可用的功能。

域名

获取和配置域名不在本文档的范围内。通常,你需要从域名注册商购买一个域名,在主机服务商处购买服务器资源,然后将你的域名指向该主机服务商的服务器。

为了模拟这种情况,你也可以编辑你的 hosts 文件,在 Linux 系统中该文件位于 /etc/hosts。添加一行,将一个名称关联到本地 IP。

现代的 Linux 系统可能已经配置好自动将以 .localhost 结尾的域名当作本地地址,无需将其添加到 hosts 文件中。

/etc/hosts
127.0.0.1 hello.localhost

配置

Nginx 的配置文件在 Linux 系统中位于 /etc/nginx/nginx.conf。在其他操作系统上可能有所不同,请查看相关文档并搜索 nginx.conf

移除或注释掉现有的任何 server 段。添加一个 server 段,并使用 proxy_pass 指令指向 WSGI 服务器正在监听的地址。我们假设 WSGI 服务器在本地监听 http://127.0.0.1:8000

/etc/nginx.conf
server {
    listen 80;
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:8000/;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Prefix /;
    }
}

然后配置 告知 Flask 它运行在代理之后,以便你的应用程序可以使用这些头部信息。