Ubuntu环境Nginx+Certbot配置SSL遇问题:站点不安全、www域名无法访问
问题1:appsazz.ir访问显示“不安全”,仅生成了主域名证书
重新生成包含双域名的证书
直接同时指定两个域名申请证书,覆盖原有证书:sudo certbot --nginx -d appsazz.ir -d www.appsazz.ir如果之前已有部分证书,也可以用
--expand参数扩展域名范围:sudo certbot --nginx --expand -d appsazz.ir -d www.appsazz.ir执行后可查看日志确认结果:
cat /var/log/letsencrypt/letsencrypt.log验证Nginx SSL配置正确性
打开/etc/nginx/conf.d/www.appsazz.ir.conf,确保主域名(appsazz.ir)的server块正确配置SSL并监听443端口:server { listen 443 ssl; server_name appsazz.ir; ssl_certificate /etc/letsencrypt/live/appsazz.ir/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/appsazz.ir/privkey.pem; # 其他SSL协议、加密套件配置保持默认即可 ... } server { listen 80; server_name appsazz.ir; return 301 https://$host$request_uri; }配置完成后重启Nginx:
sudo systemctl restart nginx检查证书覆盖域名
用openssl确认证书是否同时包含两个域名:openssl x509 -in /etc/letsencrypt/live/appsazz.ir/cert.pem -text -noout | grep DNS正常输出应包含
DNS:appsazz.ir, DNS:www.appsazz.ir清除浏览器缓存测试
使用Chrome无痕模式访问appsazz.ir,避免本地缓存残留导致的“不安全”提示。
问题2:www.appsazz.ir访问返回ERR_INTERNET_DISCONNECTED
验证DNS解析
在本地终端执行以下命令,确认www.appsazz.ir指向正确的VPS公网IP:nslookup www.appsazz.ir # 或使用dig命令 dig www.appsazz.ir如果解析结果不符,需登录域名服务商后台修改DNS记录,将www子域名的A记录指向VPS公网IP。
检查VPS防火墙端口
确认80(HTTP)和443(HTTPS)端口已对外开放:sudo ufw status如果未显示允许规则,执行以下命令开放端口:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw reload确认Nginx监听配置
检查Nginx配置中是否存在www.appsazz.ir的server块,且配置正确:server { listen 443 ssl; server_name www.appsazz.ir; ssl_certificate /etc/letsencrypt/live/appsazz.ir/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/appsazz.ir/privkey.pem; ... } server { listen 80; server_name www.appsazz.ir; return 301 https://$host$request_uri; }执行
nginx -t确认语法无误后,重启Nginx:sudo systemctl restart nginx测试网络连通性
在本地终端测试端口连通性:telnet www.appsazz.ir 443 # 或用curl测试HTTPS响应 curl -I https://www.appsazz.ir如果无法连通,需排查VPS的网络出口是否被运营商或服务商限制。
内容的提问来源于stack exchange,提问作者mobin kazemi

