Nginx: Múltiplos PHP fpm em subdiretórios em um domínio

0

Eu preciso ter vários PHP-FPMs em um único domínio.

Exemplo: services.local / notification - > notificação: 9000 services.local / auth - > auth: 9000

Então, eu tenho uma configuração vhost:

server {
    server_name services.local;
    root /www;

    include /etc/nginx/conf.d/services/*.conf;
    error_log /var/log/nginx/symfony_error.log;
}

E eu tenho um notification.conf

location /notification {
    root /www/;
    index app.php index.html;

    #try_files $uri $uri /notification/web/app.php?$is_args$args;
    rewrite ^(.*)$ /notification/web/app.php last;
}


location /notification/web/app.php {
    fastcgi_pass notification-upstream;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /www/notification/web/app.php;
    fastcgi_param HTTPS on;
}

O problema é que cada reescrita no arquivo app.php resulta no download do seu conteúdo, não passando para o FPM.

Quando eu acesso o app.php diretamente, ele é passado para o PHP-FPM, só que o problema é com uma combinação de subdiretório + PHP-FPM + reescrita

Acho que tentei de tudo por dois dias e não tenho outras ideias. Esta configuração foi reconstruída 50 vezes:)

    
por Krzysztofa Krzysztof 20.01.2017 / 08:24

1 resposta

0

Finalmente, encontrei a solução. Não sei se funcionaria com ativos estáticos, provavelmente não, mas esse não era o meu caso. Sinta-se à vontade para embelezar e simplificar esse código, pois estou ciente de que ele parece um pouco feio, mas está funcionando perfeitamente.

location ~ /notification {
    set $new_request_uri /;
    if ($request_uri ~ ^/notification(.+)$) {
        set $new_request_uri $1;
    }

    if ($request_uri ~ ^/notification\?(.+)$) {
        set $new_request_uri /?$1;
    }

    set $new_document_uri /;
    if ($document_uri ~ ^/notification(.+)$) {
        set $new_document_uri $1;
    }

    fastcgi_pass wolnosciowiec_notification:9000;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param REQUEST_URI     $new_request_uri;
    fastcgi_param DOCUMENT_URI    $new_document_uri;
    fastcgi_param SCRIPT_NAME     /www/notification/web/app.php;
    fastcgi_param SCRIPT_FILENAME /www/notification/web/app.php;
    fastcgi_param DOCUMENT_ROOT   /www/notification/web;
    fastcgi_param HTTPS on;
}
    
por 20.01.2017 / 19:21

Tags