Nginx 不会为除 www.myserver.org 之外的任何服务器提供服务

Nginx 不会为除 www.myserver.org 之外的任何服务器提供服务

根据nginx 文档,下面的服务器块应该适用于两者https://joycegroup.orghttps://www.joycegroup.org

server {

listen 443 ssl;

ssl_certificate /etc/ssl/certs/joycegroup_org_chain.crt;

ssl_certificate_key /etc/ssl/private/joycegroup_org.key;

root /var/www/joycegroup_org/;

server_name joycegroup.org www.joycegroup.org;

location / {
index index.html index.htm index.html index.php;
}

}

它适用于https://www.joycegroup.org, 不是https://joycegroup.org。 我究竟做错了什么?

最终我也想将 http 重定向到 https,但我首先想解决这个问题。

我很抱歉问了这个问题。我已经绞尽脑汁思考了好几个小时了。

答案1

www.joycegroup.org其本身并不意味着 joycegroup.org(不带 www)是有效的 DNS 记录。

请注意,您无法为域的根设置 CNAME 记录(为什么不能在域名的顶点(又称根)使用 CNAME 记录?),因此您需要一条 A 记录。

您可以通过多种方式显示这是 DNS 解析问题,例如curl https://joycegroup.org。如果显示curl: (6) Could not resolve host: joycegroup.com; Name or service not known,则这是 DNS 问题。

您可以通过在两种情况下运行 nslookup 或 host 或 dig 并比较输出来进一步确认这是与两个记录之间的差异相关的 DNS 问题。

一些例子:

  • host(Linux):
$ host <record with www>

<record with www> has address 192.168.1.10

$ host <record without www>

<no output is shown>

  • nslookup(Linux):
$ nslookup <record without www>
Server:         <dns server ip>
Address:        <dns server ip>#53

*** Can't find <record without www>: No answer

$ nslookup <record with www>

Server:         <dns server ip>
Address:        <dns server ip>#53

Name:   <record with www>
Address: 192.168.1.10
  • nslookup(视窗):
C:\Users\myuser> nslookup <record without www>

Server:  <dns server>
Address:  <dns server ip>

Name:    <record without www>

请注意,没有显示任何 IP 地址。它返回一些信息,因为每个区域都有自己的记录,尽管它不是 A 记录(与 IP 地址相关联),而是 SOA 记录。

另一方面,如果您查询实际存在的 A 记录,您将得到经典的答复:

C:\Users\myuser>nslookup <record with www>

Server:  <dns server>
Address:  <dns server ip>

Name:    <record with www>
Address:  192.168.1.10

答案2

根据 的回答A. Darwin,您没有为 设定 DNS 记录joycegroup.org

c-nan@mba-c-nan ~ % dig www.joycegroup.org A +short  
50.116.60.151
c-nan@mba-c-nan ~ % dig joycegroup.org A +short    
c-nan@mba-c-nan ~ % 

您应该添加以下 DNS A 记录

joycegroup.org  IN  A   50.116.60.151

在您的 DNS 提供商处:

c-nan@mba-c-nan ~ % dig joycegroup.org NS +short
dns1.registrar-servers.com.
dns2.registrar-servers.com.
c-nan@mba-c-nan ~ % 

如果您想将所有 http 流量重定向到 https,您可以进行以下配置:

server {
    listen 80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
}

对于特定域,您可以使用:

server {
    listen 80;
    server_name www.joycegroup.com joycegroup.com;
    return 301 https://joycegroup.com$request_uri;
}

相关内容