Nginx não servirá para nada além de www.myserver.org

Nginx não servirá para nada além de www.myserver.org

De acordo comdocumentação nginx, o bloco de servidor abaixo deve funcionar para amboshttps://joycegroup.orgehttps://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;
}

}

Funciona parahttps://www.joycegroup.org, nãohttps://joycegroup.org. O que estou fazendo de errado?

Eventualmente, também desejarei redirecionar http para https, mas estou tentando descobrir esse problema primeiro.

Sinto muito pela natureza básica desta pergunta. Estou batendo a cabeça na parede há horas.

Responder1

www.joycegroup.orgpor si só não significa que joycegroup.org (sem www) seja um registro DNS válido.

Observe que você não pode configurar um registro CNAME para a raiz de um domínio (Por que um registro CNAME não pode ser usado no ápice (também conhecido como raiz) de um domínio?), então você precisa de um registro A.

Você pode mostrar que é um problema de resolução de DNS de várias maneiras, como curl https://joycegroup.org. Se aparecer curl: (6) Could not resolve host: joycegroup.com; Name or service not known, é um problema de DNS.

Você pode confirmar ainda que é um problema de DNS relacionado à diferença entre os dois registros executando nslookup ou host ou dig em ambos os casos e comparando a saída.

Alguns exemplos:

  • 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(Janelas):
C:\Users\myuser> nslookup <record without www>

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

Name:    <record without www>

Observe que nenhum endereço IP é mostrado. Retorna algo porque cada zona tem seu próprio registro, embora não seja um registro A (associado a um endereço IP), mas sim um registro SOA.

Por outro lado, se você consultar um registro A que realmente existe, obterá a resposta clássica:

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

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

Name:    <record with www>
Address:  192.168.1.10

Responder2

Conforme respondido por A. Darwin, você não tem um registro DNS definido para 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 ~ % 

Você deve adicionar o seguinte registro DNS A

joycegroup.org  IN  A   50.116.60.151

no seu provedor de DNS:

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

Se você deseja redirecionar TODO o tráfego http para https, você pode configurar o seguinte:

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

Para ser específico para um domínio que você pode usar:

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

informação relacionada