我有一个在开发服务器上运行的 Django 项目,现在我想将其移到 Ubuntu 生产服务器上。我启动了“python manage.py run_gunicorn 0.0.0.0:8000”,似乎成功了,但我尝试通过常规浏览器连接到它时,却发现http://JonathansCorner.com:8000/超时了。(当我手动运行“telnet localhost 8000”并发出 GET 请求时,它会打印出相应的 HTML。)UFW 已禁用。
我该怎么做才能从外部在端口 80 上使用 Gunicorn?
答案1
我有三件事供您考虑:
首先,关于你的防火墙,看起来你做运行某种防火墙,因为端口 8000 被“过滤”了:
~ nmap jonathanscorner.com -p 8000
Starting Nmap 6.40 ( http://nmap.org ) at 2014-01-14 09:53 CST
Nmap scan report for jonathanscorner.com (54.218.143.2)
Host is up (0.10s latency).
rDNS record for 54.218.143.2: ec2-54-218-143-2.us-west-2.compute.amazonaws.com
PORT STATE SERVICE
8000/tcp filtered http-alt
其次,这看起来像是在 EC2 上运行?如果是这样,您需要修改安全组以允许此流量。
第三,直接暴露 gunicorn 通常不是一个好主意。让 gunicorn 监听localhost:8000
(就像你一样),然后使用适当的 Web 服务器将请求代理到 gunicorn。
例如,安装 nginx,并它监听端口 80,然后通过 gunicorn 代理请求localhost:8000
。