我刚刚将一个站点转移到了 Forge 提供的 DO 服务器。我安装了 SSL 证书并注意到导航到https://www.example.com会导致服务器未找到错误,而http://example.com返回 200。我试图在 Nginx 配置文件中强制使用非 WWW但似乎无法使任何工作。每次尝试后我也重新启动了 Nginx。
这是我当前的 Nginx 配置文件:
server {
listen 80;
server_name example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name .example.com;
root /home/forge/default/current/public;
# FORGE SSL (DO NOT REMOVE!)
ssl_certificate /etc/nginx/ssl/default/56210/server.crt;
ssl_certificate_key /etc/nginx/ssl/default/56210/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/default-error.log error;
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
服务器设置为默认站点 - default,而不是 example.com。在将站点投入生产并安装 SSL 证书后,我意识到了这一点,我试图通过事后更改它来避免任何停机时间。我不确定被称为默认站点的站点在这里是否有任何不同,但这是要注意的关键。
因此,https:// 或http://example.com可以正常工作。www.example.com 在我测试过的所有浏览器上都返回服务器未找到错误。我还注意到 /etc/nginx/sites-enabled 中有一个 www.default 文件,我尝试将其更改为以下内容并重新启动 nginx:
server {
listen 80;
server_name www.example.com;
return 301 $scheme://example.com/$request_uri;
}
无论如何,仍然收到未找到服务器。这是 Chrome 上的错误:
找不到 www.example.com 的服务器,因为 DNS 查找失败。DNS 是将网站名称转换为其 Internet 地址的网络服务。此错误最常见的原因是没有连接到 Internet 或网络配置错误。它也可能是由无响应的 DNS 服务器或阻止 Google Chrome 访问网络的防火墙引起的。