Como devo nomear meu servidor no nginx se tiver um servidor de redirecionamento e o servidor principal?

Como devo nomear meu servidor no nginx se tiver um servidor de redirecionamento e o servidor principal?

Suponha que meu servidor principal sirva https://www.example.come o servidor de redirecionamento redirecione http://www.example.compara https://www.example.com. Como devo nomear esses dois servidores? Existe uma espécie de prática recomendada para isso?

O nome do servidor é principalmente uma preferência pessoal, de modo que posso nomear qualquer coisa?

Responder1

Ambos deveriam ser nomeados www.example.com. Esse nome geralmente é muito importante porque se você hospedar mais de um host virtual no mesmo endereço IP, nginxusará o nome para corresponder ao vhost que deve tratar a solicitação com aquele no Hostcabeçalho da solicitação http. No seu caso com dois vhosts, mas com protocolos diferentes (http/https), o protocolo (ou melhor, a Listenporta) será usado para diferenciar ainda mais entre os dois vhosts.

Responder2

Os nomes dos servidores são uma parte importante da configuração do nginx. Se você servir vários domínios/subdomínios de um servidor com um único IP público, a server_namediretiva informa ao nginx qual servidor deve responder a uma solicitação. Se não houver um nome de servidor correspondente, o nginx procurará em seguida um servidor padrão que, se presente, atue como uma espécie de servidor 'pega tudo'.

Aqui está umexemplo de configuraçãopara redirecionamento http -> https, onde você também pode ver como nomear servidores corretamente sem obter erros.

/etc/nginx/sites-available/www.example.com.vhost

# This server will redirect all http -> https
server {
        # Listen for both IPv4 and IPv6 requests.
        listen 80;
        listen [::]:80;
        server_name www.example.com example.com;

        # This section assuming you're using Let's Encrypt / certbot
        location ^~ /.well-known/acme-challenge/ {
            default_type "text/plain";
            root         /path/to/your/document/root
        }
        location = /.well-known/acme-challenge/ {
            return 404;
        }

        # Here's where your 301 permanent redirect to the https:/www version happens.
        return 301 https://www.example.com$request_uri;

}

# This server will redirect all https requests without www to the version with www
server {
        # Listen for both IPv4 and IPv6 requests and activate http2.
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name example.com;

        ssl on;
        # Paths to certificates assuming you're using Let's Encrypt / certbot
        ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
        # There's much more directives you should fine tune for https, but that's another task.

        # Here's where your 301 permanent redirect to the https://www version happens.
        return 301 https://www.example.com$request_uri;
}

# This server will actually server your https content.
server {
        # Listen for both IPv4 and IPv6 requests and activate http2.
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name www.example.com;

        ssl on;
        # Paths to certificates assuming you're using let's encrypt / certbot
        ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
        # There's much more directives you should fine tune for https, but that's another task.

        ####
        #
        # Your server directives go here.
        #
        ####
}

informação relacionada