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;
}

相關內容