当域名中没有www时,Nginx加载时没有gunicorn



当我在搜索的域名中没有www的情况下查找我的域时,我得到了一个404 Not Found nginx/1.18.0(Ubuntu(错误。它找到了nginx,所以它显然找到了我的服务器,但我找不到有人不能在没有www.的情况下加载gunicorn。我的名字服务器都指向写ip地址,左边有我域名的服务器就是我把它留空或在字段中放@的地方。我已经看过了我用来确保我完成每一步的指南,是不是有一些配置我可能搞砸了?

我在/var/log/nginx中的错误日志没有显示任何相关信息,在/var/log/webapp中的日志也没有,所以我不明白为什么gunicorn在没有www 的情况下不会加载

我发现这可能与我在nginx中的配置文件有关,所以这是我的/etc/nginx/sties-enabled/webapp

server {
server_name www.websitename.com;
location /static {
alias /home/sai/webapp/website/static;
}
location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
proxy_redirect off;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/www.websitename.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.websitename.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.websitename.com) {
return 301 https://$host$request_uri;
} # managed by Certbot

listen 80;
server_name www.websitename.com;
return 404; # managed by Certbot

}

我发现我的错误可能是certbot只将www.websitename.com重定向到https,所以我要试着想办法将websitenamecom添加到其中,因为仅仅添加另一个if under会使我的nginx无法重新启动

将其作为您的conf,然后运行sudo certbot --nginx -d websitename.com -d www.websitename.com,它应该为您的域和工作创建ssl证书

server {
server_name websitename.com www.websitename.com;
location /static {
alias /home/sai/webapp/website/static;
}
location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
proxy_redirect off;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/www.websitename.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.websitename.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}```

因此,如果您在这里查看,它们在单独的服务器块中执行所有操作。我对他们的代码和我的代码之间的差异感到不舒服,我也不完全理解这些差异意味着什么,所以任何评论或其他答案都会有所帮助,但这应该会按照你的文件格式为你解决问题。只需将其添加到底部

server {
if ($host = websitename.com) {
return 301 https://$host$request_uri;
} #managed by Certbot
listen 80;
server_name websitename.com;
return 404;
}

最新更新