我已经启动并运行了 digitalocean droplet,我的仪表板上的 ip 是 159.xxx.xxx.xx,使用 nano /etc/nginx/sites-available/hello_world 我有这个配置文件:
server {
listen 80;
server_name 159.xxx.xxx.xx;
location / {
proxy_pass https://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static/ {
alias /root/dev/hello_world/staticfiles/;
}
}
当我到了https://159.xxx.xxx.xx:80/ssl_error_rx_record_too_long
在我的浏览器中,我在 Firefox 和Chrome 中都看到了这个ERR_SSL_PROTOCOL_ERROR
。
无论我是否运行 gunicorn,都会发生这种情况gunicorn hello_world.wsgi --bind 127.0.0.1:8000
为什么我会收到此错误?我该怎么做才能修复它?提前感谢您的耐心。
答案1
您收到 SSL 协议错误,因为 nginx 仅在端口 80 上提供 HTTP 服务,而不是 HTTPS。但是您在 URL 开头错误地输入了 https。
答案2
在 https 上启动简单应用程序
# gunicorn -w 4 --certfile=/etc/pki/nginx/server.crt --keyfile=/etc/pki/nginx/server.key test_app:app
2016-03-06 18:59:28 [8545] [INFO] Starting gunicorn 18.0
2016-03-06 18:59:28 [8545] [INFO] Listening at: https://127.0.0.1:8000 (8545)
2016-03-06 18:59:28 [8545] [INFO] Using worker: sync
2016-03-06 18:59:28 [8550] [INFO] Booting worker with pid: 8550
2016-03-06 18:59:28 [8551] [INFO] Booting worker with pid: 8551
2016-03-06 18:59:28 [8552] [INFO] Booting worker with pid: 8552
2016-03-06 18:59:28 [8553] [INFO] Booting worker with pid: 8553
配置 nginx
server {
listen *:8090;
server_name www.example.net;
location / {
proxy_pass https://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
测试 gunicorn
# curl -k https://127.0.0.1:8000/
Hello, World!
测试 nginx
# curl http://www.example.net:8090/
Hello, World!
所以我认为你的问题出在 gunicorn 应用程序设置上