Puncte:1

Cum pot transmite o valoare personalizată a parametrilor FastCGI într-o variabilă NGINX?

drapel br

Folosind FastCGI modul mi-a permis să transmit variabilele serverului direct în aplicația mea PHP prin utilizarea lui param. Ceea ce sper să fac în continuare este să înregistrez unul dintre acești parametri în jurnalele mele de acces NGINX.

Am încercat să-l atribui direct formatului de jurnal după numele parametrului, dar pare să rezulte o valoare goală. Mai târziu am încercat să trec acest parametru într-o variabilă NGINX, dar nici acolo nu am avut succes.

În următoarea configurație, am definit propria mea variabilă NGINX $logparam pentru a stoca valoarea declarată pe propriul parametru FastCGI personalizat LOG_PARAM, care nu pare să funcționeze așa.

Dacă există vreo soluție posibilă pentru a rezolva acest lucru, ar fi foarte apreciat.

http {
    includ /etc/nginx/mime.types;
    aplicație de tip_default/octet-stream;

    # Adăugarea variabilei nginx pentru a accesa formatul de jurnal
    log_format docker „$remote_addr - $remote_user [$time_local] „$request” '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$logparam"';

    include conf.d/*.conf;

    harta $http_upgrade $connection_upgrade {
        „upgrade” implicit;
    }

    Server {
        asculta 80 default_server;
        access_log /var/log/nginx/access.log docker;
        # Variabilă declarată pentru a stoca param. fastcgi
        setați $logparam „”;

        client_header_timeout 60;
        client_body_timeout 60;
        keepalive_timeout 60;
        gzip off;
        gzip_comp_level 4;
        gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        Locație / {
            try_files $uri $uri/ /index.php?_url=$uri&$args;
        }

        locație ~ [^/]\.php(/|$) { 

            fastcgi_pass unix:/run/php-fpm/www.sock;
            fastcgi_index /index.php;

            fastcgi_buffers 16 16k; 
            fastcgi_buffer_size 32k;
            
            includ /etc/nginx/fastcgi_params;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

            # Declarat parametru nou cu valoare personalizată și trecerea la variabila nginx
            fastcgi_param LOG_PARAM „testare”;
            setează $logparam LOG_PARAM;
        }

        locație ~ /\.ht {
            nega totul;
        }

        locație ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expira max;
            log_not_found off;
            access_log off;
        }

    }
}
Puncte:0
drapel cn

Cred că ați putea adăuga variabila la un antet de răspuns și să înregistrați acest antet de răspuns.

Adăugați o variabilă la antetul răspunsului:

locație ~ [^/]\.php(/|$) {
    add_header x-my-param "$logparam";
    ...
}

Și schimbați formatul de jurnal:

log_format docker „$remote_addr - $remote_user [$time_local] „$request” '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$sent_http_x_my_param"';

Sper că acest lucru funcționează.

Vezi si:

https://nginx.org/en/docs/http/ngx_http_log_module.html#log_format

https://nginx.org/en/docs/http/ngx_http_core_module.html#variables

drapel br
Bună @ampularius, răspunsul tău nu corespunde în mod direct cu întrebarea mea, speram să găsesc o modalitate de a trece valoarea unui param FastCGI LOG_PARAM în variabila $logparams Nginx, abordarea cu care mergi nu acoperă cum să o treci dintr-un parametru FastCGI. Și, deoarece este un parametru FastCGI, este destinat să fie utilizat ca variabilă de server, așa că nu doresc să folosesc un antet în acest scenariu.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.