Nginx, PHP-FPM com 2 aplicativos em subfoders

1

Eu tenho dois aplicativos em duas pastas diferentes. Eu quero usar a pasta raiz para tudo, exceto quando há / SOMENAME como uma pasta na url, nesse caso eu quero apontar para essa pasta.

Eu tentei vários locais / blocos de alias, mas nenhum deles funcionou (o local estava correto, mas os arquivos php não foram servidos apenas conteúdo estático) ... veja minha configuração abaixo.

server {
    listen 80;
    #disable_symlinks off;
    server_name join.mydomain.com; #allow few domains
    root /www/main;

    #removing the 'index.php'
    location / {
            if (!-e $request_filename){
                rewrite ^(.*)$ /index.php;
            }
            index index.html index.php;
    }

    location /SOMENAME/ {
            root /www/somename;
    }

    #######################
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass        unix:/var/run/php5-fpm.sock;
        include             fastcgi_params;
        fastcgi_param       PATH_INFO $fastcgi_script_name;
        fastcgi_param HTTPS on;
        fastcgi_index       index.php;
        fastcgi_param       SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}
    
por Danny Valariola 05.09.2016 / 22:17

1 resposta

1

Você tem dois aplicativos PHP hospedados em diferentes origens de documentos, o que significa que você precisa de dois blocos location ~ \.php$ . Supondo que SOMENAME e somename sejam realmente iguais, você pode usar algo assim:

root /www/main;
index index.html index.php;

location / {
    try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass  unix:/var/run/php5-fpm.sock;
    include       fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $request_filename;
}

location ^~ /somename {
    root /www;
    try_files $uri $uri/ /somename/index.php;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass  unix:/var/run/php5-fpm.sock;
        include       fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }
}

O modificador ^~ na diretiva location , faz com que esse local de prefixo tenha precedência sobre o bloco de local de expressão regular acima dele, para que os scripts PHP sejam processados pelo bloco de local correto. Consulte este documento para obter detalhes.

A diretiva try_files é documentada aqui .

    
por 06.09.2016 / 10:18