Como alias um nome no nginx sem o aliasing do nome do domínio?

2

Eu tenho essa linha no meu arquivo de configuração

server_name site.com m.site.com

Meu código verifica se o URL é m.site.com e exibe a versão para celular. No entanto, quando eu fizer isso, ir para m.site.com/abc mostrará meu código site.com/abc , o que está errado. Se eu copiar / colar o bloco inteiro e mudar o site para m.site.com, tudo funcionará bem. Mas prefiro não ter configuração duplicada (ou código).

Existe alguma maneira de contornar isso?

    
por ChrisF 03.10.2011 / 23:18

3 respostas

2

É uma forma ineficaz mesmo se você marcar $http_host na configuração. Assim, a melhor maneira é colocar todos os bits comuns em um arquivo e incluir em server block separado:

server {
    listen       80;
    server_name  site.com;
    root         /var/www/localhost/htdocs/site.com;
    include      asp.conf
}

server {
    listen       80;
    server_name  m.site.com;
    root         /var/www/localhost/htdocs/m.site.com;
    include      asp.conf
    ...
}
    
por 04.10.2011 / 05:42
0

Você tem duas opções aqui:

1) Tenha blocos de configuração "duplicados" para o nginx

2) Faça com que seu site detecte o nome do servidor (em PHP, $ _SERVER ['SERVER_NAME'] ou $ _SERVER ['HTTP_HOST']) e forneça um site diferente, dependendo de qual seja.

    
por 04.10.2011 / 03:10
0

Se você estiver usando o nginx como proxy reverso, tente adicionar a diretiva proxy_set_header perto da diretiva proxy_pass , desta forma:

proxy_pass   http://my.asp.net.hostname:8000;
proxy_set_header Host $http_host;

Isso garante que o nginx esteja passando o cabeçalho do Host textualmente, em vez de usar o nome do servidor principal.

    
por 13.10.2012 / 09:18

Tags