Estou usando o Nginx para hospedar vários hosts virtuais (oublocos de servidorna nomenclatura Nginx). Todos esses hosts compartilham o mesmo domínio, cada um com seu próprio subdomínio atribuído. Um subdomínio entra em um loop de redirecionamento infinito, comportamento obviamente indesejável.
Observação: editei meu nome de domínio e o substituí por <mysite>
.
O domínio raiz – www.<mysite>.com
recebe solicitações conforme esperado. Ele também redireciona solicitações HTTP para HTTPS. Está configurado em <mysite>-www
.
O subdomínio assets.<mysite>.com
também recebe solicitações conforme o esperado. Não está configurado para redirecionar HTTP para HTTPS, qualquer um dos protocolos é servido. Não há problema. Está configurado em <mysite>-holding
.
O subdomínio final soft.<mysite>.com
é configurado de forma idêntica, assets.<mysite>.com
mas falha. Em vez disso, ele envia o navegador em um loop de redirecionamento, sempre apontando para https://soft.<mysite>.com
Isto, apesar de não haver tal configuração no arquivo de configuração para este vhost. Está configurado em <mysite>-soft
.
Configuração para <mysite>-www
:
server {
server_name www.<mysite>.com;
listen 80 default_server ;
listen [::]:80 default_server;
location / {
return 301 https://$server_name$request_uri;
}
root /var/www/html;
}
server {
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/www.<mysite>.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.<mysite>.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
root /var/www/html;
server_name www.<mysite>.com;
error_page 404 /404.html;
location / {
limit_req zone=mylimit burst=20 nodelay;
try_files $uri $uri/ =404;
index index.html index.htm;
}
}
Configuração para <mysite>-holding
:
server {
listen 80;
listen [::]:80;
listen 443 ssl;
server_name assets.<mysite>.com;
ssl_certificate /etc/letsencrypt/live/assets.<mysite>.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/assets.<mysite>.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
root /var/www/holding/html;
location / {
limit_req zone=mylimit burst=20 nodelay;
try_files $uri $uri/ =404;
index index.html;
}
O arquivo de configuração soft.<mysite>.com
é idêntico ao acima, exceto onde diz 'ativos', diz 'soft'. E ainda assim ele entra nesse ciclo interminável de redirecionamento.
Eu tentei variar a diretiva de localização. eu consulteios documentosque foram melhores do que o esperado. Ainda assim, ele faz um loop. A ajuda será apreciada!
Responder1
Acontece que o problema foi o seguinte:
Eu não tinha vinculado corretamente de /sites-enabled
para /sites-available
e estava usando uma duplicata antiga <mysite>-www
que causou o loop de redirecionamento.
Ter o arquivo configurado conforme acima na minha pergunta foi a solução. Copiá-lo para sites habilitados ou vinculá-lo corretamente resolverá o problema para qualquer pessoa em situação semelhante.
Mea culpa.