Nginx: Beberapa PHP fpm pada subdirektori dalam satu domain

0

Saya perlu memiliki beberapa PHP-FPM di domain tunggal.

Contoh: services.local / notifikasi -> notifikasi: 9000 services.local / auth -> auth: 9000

Jadi, saya punya konfigurasi vhost:

server {
    server_name services.local;
    root /www;

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

Dan saya punya 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;
}

Masalahnya adalah bahwa setiap penulisan ulang ke app.php menghasilkan pengunduhan kontennya, bukan meneruskannya ke FPM.

Ketika saya mengakses app.php secara langsung maka itu diteruskan ke PHP-FPM, satu-satunya masalah adalah dengan kombinasi subdirektori + PHP-FPM + menulis ulang

Saya pikir saya sudah mencoba semuanya selama dua hari dan saya tidak punya ide lain. Konfigurasi ini dibangun kembali 50 kali :)

Krzysztofa Krzysztof
sumber
Hai, dapatkah Anda memberikan saran untuk pertanyaan saya: serverfault.com/questions/865588/…
Phung D. An

Jawaban:

0

Akhirnya saya menemukan solusinya. Saya tidak tahu hanya apakah itu akan bekerja dengan aset statis, mungkin tidak, tetapi ini bukan kasus saya. Merasa bebas untuk mempercantik dan menyederhanakan kode ini karena saya sadar bahwa kode ini terlihat sedikit jelek tetapi berfungsi dengan baik.

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;
}
Krzysztofa Krzysztof
sumber