我想在 digitalocean droplet 上部署一个网站。到目前为止,当我访问 IP 地址 123.45.678.910 时,它按预期工作,但当我访问我的域名时,我看到“无法访问此站点,my-site.com 拒绝连接”在 Chrome 上。我可以这样做ping mysite.com
,并且可以看到它转到了正确的 IP 地址。
我使用以下方式将我的 Namecheap 域名连接到我的 droplet本教程。我已经等了 24 个小时,我想这段时间应该足够域名传播了。
我在 nginx 错误日志中没有看到任何最新内容。当我检查 droplet 上的 nginx、gunicorn 和 gunicorn.service 的状态时,它们似乎都在运行。
这是我的/etc/nginx/sites-avaliable/my-site
:
listen 80;
listen [::]:80;
server_name my-site.com 123.45.678.910;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/my-site/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
我尝试使用以下命令安装 SSL 证书:
sudo certbot --nginx -d my-site.com -d www.my-site.com
我认为它没有起作用,但我不确定这是否与它有关。
如果您认为我应该包含更多信息,请告诉我,我以前从未这样做过,因此任何信息都是有帮助的。
谢谢!
编辑:我在 的输出中看到了这一点systemctl status nginx
。这只是一个警告(临终遗言),但我想知道这是否可能是原因,因为使用 IP 地址有效,但域名无效。
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-03-22 00:40:42 UTC; 3min 1s ago
Docs: man:nginx(8)
Process: 185516 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 185527 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 185528 (nginx)
Tasks: 2 (limit: 1131)
Memory: 3.2M
CGroup: /system.slice/nginx.service
├─185528 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─185529 nginx: worker process
Mar 22 00:40:42 my-site systemd[1]: Starting A high performance web server and a reverse proxy server...
Mar 22 00:40:42 my-site nginx[185516]: nginx: [warn] conflicting server name "my-site.com" on 0.0.0.0:80, ignored
Mar 22 00:40:42 my-site nginx[185516]: nginx: [warn] conflicting server name "my-site.com" on [::]:80, ignored
Mar 22 00:40:42 my-site nginx[185527]: nginx: [warn] conflicting server name "my-site.com" on 0.0.0.0:80, ignored
Mar 22 00:40:42 my-site nginx[185527]: nginx: [warn] conflicting server name "my-site.com" on [::]:80, ignored
Mar 22 00:40:42 my-site systemd[1]: Started A high performance web server and a reverse proxy server.
答案1
这与防火墙有关。
首先,当我最初尝试运行该certbot
命令时,我遇到了奇怪的错误,因此不得不重新安装 pip。我遵循了以下命令:
sudo apt-get update
sudo apt-get install python-certbot-nginx
sudo ufw allow ssh
sudo ufw enable
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
sudo ufw status
status 命令显示一切都已允许(目前)。现在我添加我的 SSL 证书:
sudo certbot --nginx -d my-site.com -d www.my-site.com
它会提示您是否希望所有站点都定向到安全访问。
更新防火墙并添加 SSL 证书后,my-site.com 现已上线!:D