Apenas implemente um servidor padrão. Aqui está o meu
server {
listen 80 default_server;
server_name _;
return 302 https://www.example.com;
}
Você pode fazer qualquer ação que quiser.
Estou tentando realizar três coisas:
Minha configuração do nginx até agora é:
map $subdomain $subdomain_port {
default 8000;
www 8000;
subdomain1 8001;
subdomain2 8002;
subdomain3 8003;
}
server {
listen 80;
listen [::]:80;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name ~^(?P<subdomain>.+?)\.mydomain\.com$;
ssl_certificate <cert>;
ssl_certificate_key <key>;
location / {
# ... various proxy headers, then ...
proxy_pass http://127.0.0.1:$subdomain_port;
proxy_redirect off;
}
}
Este quase funciona (realiza # 1 e # 3), mas em vez de redirecionar foo.mydomain.com
para www.mydomain.com
, ele apenas exibe o www
content sem redirecionar. Não tenho certeza de como redirecionar subdomínios não mapeados sem dividir a coisa toda em blocos server
separados, o que eu realmente prefiro não fazer.
Existe uma maneira de redirecionar todos os subdomínios não mencionados explicitamente no mapa para www
?
Apenas implemente um servidor padrão. Aqui está o meu
server {
listen 80 default_server;
server_name _;
return 302 https://www.example.com;
}
Você pode fazer qualquer ação que quiser.
Apenas para dizer que, na AWS, eu precisava adicionar um registro A "* .staging.mydomain.com" no Route53 apontando para o mesmo IP da instância do EC2 (como o registro de "staging.mydomain.com")
O seguinte funciona para mim ...
Aqui está a alteração na configuração do Nginx para que funcione ...
map $subdomain $subdomain_port {
default 8888;
www 8000;
subdomain1 8001;
subdomain2 8002;
subdomain3 8003;
}
server {
listen 8888;
server_name _;
return 301 https://www.domainname.com/$request_uri;
}
# other configs remain the same
Eu usei 8888 como a porta padrão. Qualquer porta não utilizada deve funcionar.