使用 nginx 获取 SSL 错误

使用 nginx 获取 SSL 错误

我已经启动并运行了 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 应用程序设置上

相关内容