我无法配置 nginx 来为我的网站的 www 版本提供服务(重定向?)。非 www 版本运行正常。我怀疑这是 DNS 问题,但我的经验不足,无法知道这一点。这是我的工作虚拟主机文件,可以正确为网站的非 www 版本提供服务。
server {
listen 80;
server_name mysite.me;
index index.html;
root /opt/www/mysite.me/_site;
}
另外,当运行任何程序时,sudo commands
我都会收到此错误
sudo:无法解析主机 www.mysite.com
我也尝试过添加这个块,但它对我来说也不起作用
server {
listen 80;
server_name mysite.me;
return 301 $scheme://www.mysite.me$request_uri;
}
答案1
来自文档:
server {
listen 80;
server_name example.org;
return 301 http://www.example.org$request_uri;
}
server {
listen 80;
server_name www.example.org;
...
}
答案2
其他人有针对 Nginx 的答案,但就调试而言,我的建议是使用curl
可以-I
选择查看每个域的标头。正如文档curl
所-I
解释的那样:
(HTTP)在输出中包含 HTTP 标头。HTTP 标头包括服务器名称、文档日期、HTTP 版本等内容...
例如,执行curl -I
togoogle.com
将返回以下内容:
curl -I google.com
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Wed, 09 Apr 2014 00:45:23 GMT
Expires: Fri, 09 May 2014 00:45:23 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic
您可以从中获得两个关键信息,一个是HTTP/1.1
响应代码,即301 Moved Permanently
,另一个Location:
是 与响应代码相连HTTP/1.1
并将新位置 URL 设置为http://www.google.com/
。现在,让我们curl -I
像www.google.com
这样执行 :
curl -I www.google.com
HTTP/1.1 200 OK
Date: Wed, 09 Apr 2014 00:47:28 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=79631a82c2c7cf67:FF=0:TM=1397004448:LM=1397004448:S=z010eeEdNjG129tJ; expires=Fri, 08-Apr-2016 00:47:28 GMT; path=/; domain=.google.com
Set-Cookie: NID=67=e9j_a0lvogCKF-Mt-OdZKlRoMwaGJXis7yA0i0l1zKuh2mz_P5MUCsyzvPVhz9yBY2Wi04XzY2tn8UlqaT2i-rvVHGIAb1l1FwXm4wxvLtNTmSvREavLD6qDLeDBar2r; expires=Thu, 09-Oct-2014 00:47:28 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic
Transfer-Encoding: chunked
请注意,HTTP/1.1
响应代码是200 OK
,这意味着 URL 良好并且将从此时开始加载。
curl -I mysite.me
因此,在您的情况下,比较标题输出curl -I www.mysite.me
,然后您就可以调试正在发生的事情。
答案3
dig mysite.com
检查和的输出dig www.mysite.com
。如果它们都没有返回服务器的 IP 地址,则说明 DNS 设置有误,需要A record
为缺失的域创建适当的条目。
之后,您可以使用@Midimo 示例让服务器显示正确的页面。
答案4
我遇到了 DNS 问题。我向 CNAME 记录添加了一个 catchall 路由 ( * ),现在它正常工作了。这是我的服务器块。
server {
listen 80;
server_name www.mysite.me;
root /opt/www/mysite.me/_site;
return 301 $scheme://mysite.me$request_uri;
}
server {
listen 80;
server_name mysite.me;
root /opt/www/mysite.me/_site;