Por vários motivos, seguimos um esquema de DNS interno em que o site de teste interno para 'www.test.com' seria 'p.test-tst.com.local'. Não vou entrar em detalhes porque acabamos com o esquema que estamos usando.
Agora, eu poderia adicionar 'p.test-tst.com.local', 'p.test-tst.de.local', 'p.test-tst.co.uk.local' (e assim por diante) ao Nginx arquivo de configuração para este site de teste específico. No entanto, não existe uma maneira mais flexível de fazer isso? Eu poderia, de alguma forma, fazer o Nginx aceitar 'p.test.tst.com.local' e reescrever isso internamente para 'www.test.com' para que o site (rodando no Drupal) pensasse que a solicitação veio para ' www.test.com'?
Uma das principais razões pelas quais isso seria bom é que eu não teria que pensar em adicionar mais lógica ao Drupal quando se trata de manipulação de linguagem (definir uma linguagem para 'com.local').
Se eu entendi você corretamente, você precisa de algo assim:
map $http_host $name { hostnames; p.test.tst.com.local test.com; ... } ... server { ... location / { fastcgi_pass unix:/var/run/php5-fpm.sock include fastcgi_params fastcgi_param HTTP_HOST $name; }
Isso definirá a variável HTTP_HOST em $SERVER para test.com se o nome do host real solicitado for p.test.tst.com.local. O Drupal examina o valor $SERVER['HTTP_HOST'] para determinar um nome de host. Você pode adicionar outros mapeamentos para
map {}
que seja bastante flexível.Se você deseja que seu site responda a esses valores de Hosts, não há escolha, você deve colocá-los na
server_name
diretiva (você pode usar curinga ou regex para tornar a conf mais curta).Arquivo /caminho/para/nomes_do_servidor: