我目前正在尝试在 Ubuntu 18.04.3 droplet 上部署我的 Django 应用程序。我正在关注这个教程。
我已成功完成本教程,访问我的服务器 IP 和“www.domainname.com”时,我的应用程序已提供服务。但是,当我尝试访问没有“www”@“domainname.com”的域名地址时,它会显示
拒绝连接。
正如我之前所说,当我直接访问 IP 地址时,它可以 100% 正确显示并提供应用程序的静态文件。
我认为这与 NGINX 配置有关,因为我已正确完成本教程的所有其他部分,且没有任何错误。
这是我的 NGINX 服务器块@ /etc/nginx/sites-available/mysite
:
server {
listen 80;
server_name 165.227.222.0;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ethan/cfsite/cfsite;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
我完全注释掉了默认服务器块,/etc/nginx/sites-available/default
因为我读到它是符号链接到的/etc/nginx/sites-enabled/
。
当我sudo tail -F /var/log/nginx/error.log
得到这个:
2019/09/26 14:25:58 [alert] 6680#6680: *3 open socket #3 left in connection 4
2019/09/26 14:25:58 [alert] 6680#6680: aborting
我假设某个地方的代理存在问题,或者注册商没有正确重定向到 DigitalOcean,因为直接访问 DO IP 会产生正确的结果并提供静态文件。
请帮忙!这是一个简单的作品集网站,我之前从未配置过服务器。
答案1
几点:
服务器名称通常应包括您想要用于该服务器的所有名称,例如:
server_name example.com www.example.com 165.227.222.0;
您的域名的任何 DNS 记录都应该有一个指向您的 Nginx 服务器 IP 的“裸” A 记录:
例如 BIND
example.com. IN A 165.227.222.0 ; A Record for a "base" domain name
如果您使用第三方 DNS,则指定此“裸”记录的方式可能会有所不同。对于 Digital Ocean DNS 服务,这似乎带有符号
@
。例如 Digital Ocean“裸”A 记录