nginx 是一个快速的、生产级别的 HTTP 服务器。当使用 生产部署 中 列出的 WSGI 服务器之一作为应用服务器时,在它前面放置一个专用的 HTTP 服务器通常是好的,甚至是必要的。这个“反向代理”可以比 WSGI 服务器更 好地处理进入的请求、 TLS 和其他安全和性能问题。
Nginx 可以使用你的系统包管理器安装,或者在 Windows 下使用预制的可执行 文件。安装和运行 Nginx 本身并不在本文档的讨论范围之内。本文概述了配置 Nginx 作为代理的基础知识。请务必阅读其文档,以了解更详细的内容。
域名¶
获取和配置域名不在本文件的讨论范围之内。一般来说,你会从注册商那里购 买一个域名,在托管商那里支付服务器空间的费用。然后将你的注册商指向主 机提供商的名称服务器。
为了模拟这一点,你也可以编辑你的 hosts
文件, Linux 系统中位于
/etc/hosts
,添加一行,将名称与本地 IP 关联。
现代 Linux 系统可以被配置为将任何以 .localhost
结尾的域名与本地
IP 关联,而不需要将其添加到 hosts
文件中。
/etc/hosts
¶127.0.0.1 hello.localhost
配置¶
Linux 系统中, nginx 的配置位于 /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 它是在一个代理后面 以让你的应用使用这些头部。
讨论区