我在运行 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
而不是一个捕获所有重定向。