Mar*_*ark 6 networking python nginx domain port
我目前在端口 80 上运行 nginx,配置的服务器名称为example.com和www.example.com。
我还有一个Flask应用程序,我想通过端口 80 访问它,但使用主机名app.example.com。
由于 nginx 已经在使用端口 80,我将如何将app.example.com请求路由到 Flask 应用程序?
请注意,服务器只有一个 IPv4 地址。
应该相当容易。
确保 Flask 本身运行在 80 以外的端口上。
然后使用 NginX 作为反向代理(和网络服务器)来处理 app.example.com 的子域,然后将其作为 localhost:8080 (或您的 Flask 应用程序绑定的任何地方)的代理处理。
upstream flask {
server 127.0.0.1:8080; #Flask
}
server {
listen YOUR_PUBLIC_IP:80;
server_name app.example.com;
location / {
proxy_pass http://flask;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以拥有许多 server{} 块,全部位于端口 80 上,只要 server_name 不同,并像 Apache VirtualHosts 一样使用它们。