Nginx - raiz específica do local

1

Estou tendo muito tempo para obter essa solução (esperançosamente simples) implementada.

Temos um site em site.com e veiculado em / home / site / public. Precisamos de um SUBDIRECTO específico de site.com (site.com/gps) para ser veiculado a partir de uma raiz de documento DIFERENTE para evitar implicações de segurança. IE site.com/gps deve ser servido em / home / sitegps / public. Implementei o seguinte bloco de localização, mas isso resulta em um http 500 devido a redirecionamentos infinitos. Eu espero que alguém tenha feito isso antes e saiba onde estou dando errado ...

# Send all /gps requests to new root
location ~ ^/gps(?:/(.*))?$ {
    alias /home/sitegps/public;
    try_files $uri $uri/ /gps/index.php?$uri&$args;
}
    
por Kevin 29.10.2018 / 18:37

1 resposta

1

Em vez de alias , o uso pode usar a diretiva raiz no bloco de locais.

Acho que você pode simplificar sua correspondência de local usando apenas /gps .

location /gps {
    root /home/sitegps/public;
    try_files $uri $uri/ /gps/index.php?$uri&$args;
}

Isso não reescreverá a solicitação e esperará corresponder arquivos em um diretório chamado gps da seguinte forma: /home/sitegps/public/gps/ . Eu não tinha certeza se isso era necessário.

Atualizar

Trabalhando com a suposição de que você não deseja ter o diretório gps no diretório /home/sitespg/public , testei usando o alias e criei esta configuração:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html;

    server_name _;

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

    location /gps/ {
            alias /var/www/gps;
            try_files $uri $uri/ =404;
    }
}

Acredito que o alias fará o que você quer, mas eles estão causando problemas ou há algo errado.

Com a barra no final em /gps/ , você evitará caminhos correspondentes, como /gpsport , mas será necessário reescrever /gps a /gps/ ou corresponder /gps exatamente com um bloco de localização.

reescreva:

rewrite ^/gps$ /gps/

localização:

location = /gps {
    alias /var/www/gps;
    try_files $uri $uri/ =404;
}

Sem dúvida, há mais variações que também funcionarão.

    
por 29.10.2018 / 19:45

Tags