Como configurar o NGINX para vários aplicativos (incluindo o Laravel) sem nome de domínio

0

Eu tenho uma instalação do Ubuntu em um VPS. Eu não tenho nenhum nome de domínio, então todo o conteúdo é acessado através do link . Eu tenho tentado configurar o nginx para executar várias aplicações web acessadas via ip / name.

Aqui está minha configuração

server {

    listen 443 ssl;

    error_log /var/log/nginx/nginx_error.log;

    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    set $root_path '/var/www/html';
    root $root_path;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php;

    server_name localhost;

    # handle static files within project.. break at end to avoid recursive redirect
    location ~ app3/((.*)\.(?:css|cur|js|jpg|jpeg|gif|htc|ico|png|html|xml))$ {
            rewrite app3/((.*)\.(?:css|cur|js|jpg|jpeg|gif|htc|ico|png|html|xml))$ /app3/$1 break;
    }

    location /app3 {
        rewrite ^/app3(.*)?$ /app3/pathto/public/index.php?$1 last;
    }


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


    location /app1 {
        try_files $uri $uri/ /index.php;
    }

    location /app2 {
        try_files $uri/ /index.php;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        #try_files $uri $uri/ =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_nam
    }
}

Isso funciona bem para app1 e app2. App3 (o aplicativo Laravel) não pode ser executado corretamente porque usa URLs absolutas em vez de caminhos relativos. Então eu recebo pedido 404 para / api .. em vez de / app3 / pathto / public / .. (Eu tentei um fork de app3 com caminhos relativos e tudo roda bem, exceto algumas imagens e fontes não exibidas)

Como posso configurar o nginx para que o app3 tenha sua própria pasta raiz? Uma diretiva raiz ou alias no local do app3 não funcionaria corretamente.

Obrigado!

    
por Lich4r 11.02.2015 / 10:18

1 resposta

1

Sua pergunta é sobre dar ao app3 sua própria pasta raiz, e essa etapa é fácil. Contanto que você note as armadilhas, você deve estar bem com isso. link

No entanto, não acho que isso realmente resolva seu problema. Seu problema parece ser que o aplicativo Laravel não pode trabalhar em uma subpasta, ou , que simplesmente não está configurado para ser executado nele. Não há muito o que fazer no nível nginx para corrigir isso. Mas verifique a configuração para qualquer ajuda sobre a configuração do aplicativo.

Uma "solução" alternativa é instalar (ou reescrever) os recursos do aplicativo 3 (api /, img / etc.) na raiz e apenas reescrever o aplicativo 1 e 2. Não será a solução mais elegante, mas, desde que não haja pastas chamadas app1 ou app2 no aplicativo Laravel, isso deve funcionar.

Editar: Uma terceira opção, e provavelmente a melhor, é, obviamente, desembolsar US $ 10 ou mais por ano por um nome de domínio, ou obter um subdomínio gratuito de um serviço de DNS gratuito. Então você pode ter um domínio separado (ou subdomínio) para app3. Eu não tenho experiência com nenhum serviço de DNS gratuito, mas isso deve ajudá-lo.

link

    
por 17.02.2015 / 11:16

Tags