nginx serve a partir de um diretório estático diferente baseado no user agent

4

eu tenho uma estrutura de diretórios como esta:

HTML
|
|--android/
|--ios/

Em suma, tenho 2 diretórios (ios & android) em HTML /

Ambos os diretórios contêm index.html. No android / index.html, há link para ../ios & Em ios / index.html, há link para ../android para alternar o usuário do ios para o android & android para ios ..

server {
    listen 80 default_server;

    root /home/vishant/HTML;
    index index.html index.htm;

    server_name wishfeed.l;

    location / {
            try_files $uri $uri/ =404;
    }
}

minha configuração nginx é como acima ..

Como atender ao diretório se o agente do usuário for ios / se o agente do usuário for android.

    
por vishant 09.07.2016 / 09:45

1 resposta

4

A map directive pode gerar uma raiz de documento apropriada a partir da string user-agent para baixo.

Por exemplo:

map $http_user_agent $root {
    "~*android" /home/vishant/HTML/android;
    "~iPhone" /home/vishant/HTML/ios;
    default /home/vishant/HTML;
}

Você mesmo terá que trabalhar nas expressões regulares, já que não sei se elas são adequadas para todos os casos.

O bloco map acima é colocado acima do bloco server dentro do contexto http do arquivo de configuração. Neste caso, ele cria uma variável chamada $root , que pode ser usada dentro do bloco server .

Se você precisar veicular todo o conteúdo do site em qualquer subdiretório, use $root para definir o global root da seguinte forma:

server {
    ...
    root $root;

    location / {
        ...
    }
}

Se você quiser que apenas o URI /index.html seja afetado, use $root em um local. Por exemplo:

location = /index.html {
    root $root;
}
    
por 09.07.2016 / 13:26

Tags