Forge / Nginx DO WWW到非WWW重定向问题

时间:2016-02-24 17:22:43

标签: nginx dns digital-ocean laravel-forge

我刚将一个站点转移到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;
}
}

服务器设置了默认网站 - 默认网站,而不是example.com。我在将网站启动到生产并安装SSL证书后意识到这一点,我试图通过尝试在事后改变它来避免任何停机。我不确定被称为默认的网站在这里是否有任何区别,但需要注意的是。

因此,https://或http://example.com运行正常。 www.example.com在我测试的所有浏览器上返回Server Not Found错误。我还注意到/ 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服务器或防火墙阻止谷歌浏览器访问网络造成的。

1 个答案:

答案 0 :(得分:0)

好吧,显然我只是需要休息一下。在我吃完午餐后,我发现Chrome一直在给我答案 - 这是一个DNS问题。我添加了一个指向我在Digital Ocean上的IP地址的A记录,问题解决了。

我相信在Laravel Forge提供的DO服务器上默认缺少www。