Nginx Django Gunicorn https 站点无法访问错误

Nginx Django Gunicorn https 站点无法访问错误

我在运行 Ubuntu 的 droplet 上有一个 Django 应用程序。我有 nginx 和 Gunicorn,我正在尝试使用 Let's Encrypt 设置 https,但我一直收到“无法访问站点错误”。

这是我的 nginx.conf:

upstream Tutorial2_prod{
    server unix:/var/test/proiect/Tutorial2.sock fail_timeout=0;
}
server {
    server_name juristnet.ro www.juristnet.ro;

    listen 443;  # <-

    ssl on;  # <-
    ssl_certificate /etc/letsencrypt/live/juristnet.ro/fullchain.pem;  # <-
    ssl_certificate_key /etc/letsencrypt/live/juristnet.ro/privkey.pem;  # <-
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
  location = /favicon.ico { access_log off; log_not_found off;
        alias /var/test/proiect/favicon.ico;    
 }
     location /static/ {
    autoindex on;
        root /var/test/proiect;
    }

    location /assets/ {
        autoindex on;
        alias /var/test/proiect/assets/;    
}
    location /.well-known/ {
        autoindex on;
        allow all;
        alias /var/test/proiect/.well-known/;
}
    location / {
        include /etc/nginx/fastcgi_params;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://unix:/var/test/proiect/Tutorial2.sock;
    proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

server {
   listen  80;
   server_name www.juristnet.ro juristnet.ro;

        return 301 https://juristnet.ro$request_uri;

}

输出netstat -an | grep 443

tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp        0     36 46.101.111.197:22       81.196.30.196:44356     ESTABLISHED

Gunicorn 配置文件:

description "Gunicorn application server handling juristnet"

start on runlevel [2345]
stop on runlevel [!2345]

respawn
setuid admin
setgid root
chdir /var/test/proiect

exec /var/test/proiect/jurist/bin/gunicorn --workers 3 --bind unix:/var/test/proiect/Tutorial2.sock Tutorial2.wsgi:application

错误日志很清晰。Nginx -t 没有返回任何错误。我不知道发生了什么,我认为这可能是由 nginx conf 中的 proxy_pass 引起的。域名已正确重定向到https://example.com,但什么都没显示。只是显示“连接被拒绝”错误。任何帮助都将不胜感激,谢谢!

答案1

也许以相同的用户和组运行 nginx 和 Gunicorn 进程可能会产生结果。

通过指定以下内容在 nginx.conf 中指定用户和组:

user username groupname

答案2

您没有提供关于 Let's Encrypt 调用的提示,但我假设是 webroot。在这种情况下,您需要通过端口 80 来处理挑战,因此您需要有一个位置块,.well-known而不是一个捕获所有重定向。

相关内容