запрос в ответ на сервере nginx

#php #rest #nginx #server #request

Вопрос:

наш сервер по какой-то причине объединяет запрос с ответом.

например, когда js отправляет запрос post/get/what угодно с name=helloamp;pass=hell
ответ от php должен быть {result:true}
но вместо этого мы получаем name=helloamp;pass=hell{result:true}
пример скриншота

это на 100% не проблема с js или php, мы тестировали одни и те же точные сценарии на разных серверах — никаких проблем там нет.
сервер, с которым у нас возникли проблемы, работает под управлением nginx, вот как выглядит конфигурация. понятия не имею, где искать ошибку

 user www-data;
worker_processes auto;
worker_rlimit_nofile 65535;
pid /var/run/nginx.pid;

events {
    worker_connections 100000;
    multi_accept on;
}

http {
    ## Basic Settings ##
    client_body_timeout             20s; # Use 5s for high-traffic sites
    client_header_timeout           20s; # Use 5s for high-traffic sites
    client_max_body_size            1024m;
    keepalive_timeout               20s;
    port_in_redirect                off;
    sendfile                        on;
    server_names_hash_bucket_size   64;
    server_name_in_redirect         off;
    server_tokens                   off;
    tcp_nodelay                     on;
    tcp_nopush                      on;
    types_hash_max_size             2048;

    ## DNS Resolver ##
    # If in China, enable the OpenDNS entry that matches your network connectivity (IPv4 only or IPv4 amp; IPv6)
    # OpenDNS (IPv4 amp; IPv6)
    #resolver                       208.67.222.222 208.67.220.220 [2620:0:ccc::2] [2620:0:ccd::2];
    # OpenDNS (IPv4 only)
    #resolver                       208.67.222.222 208.67.220.220;
    # Google Public DNS (IPv4 amp; IPv6)
    #resolver                       8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844];
    # Google Public DNS (IPv4 only) [default]
    resolver                        8.8.8.8 8.8.4.4;

        ##
        # Protect Dos
        ##
        limit_req_zone $binary_remote_addr zone=dos:10m rate=4000r/s;
        limit_req zone=dos burst=1000;
        limit_req_status 503;


    ## MIME ##
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ## Logging Settings ##
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ## Gzip Settings ##
    gzip on;
    gzip_buffers 16 8k;
    gzip_comp_level 5;
    gzip_disable "msie6";
    gzip_min_length 256;
    gzip_proxied any;
    gzip_types
        application/atom xml
        application/javascript
        application/json
        application/ld json
        application/manifest json
        application/rss xml
        application/vnd.geo json
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-javascript
        application/x-web-app-manifest json
        application/xhtml xml
        application/xml
        font/opentype
        image/bmp
        image/svg xml
        image/x-icon
        text/cache-manifest
        text/css
        text/javascript
        text/plain
        text/vcard
        text/vnd.rim.location.xloc
        text/vtt
        text/x-component
        text/x-cross-domain-policy
        text/x-js
        text/xml;
    gzip_vary on;

    # Proxy Settings
    proxy_cache_path /tmp/engintron_dynamic levels=1:2 keys_zone=engintron_dynamic:20m inactive=10m max_size=500m;
    proxy_cache_path /tmp/engintron_static levels=1:2 keys_zone=engintron_static:20m inactive=10m max_size=500m;
    proxy_temp_path /tmp/engintron_temp;

    ## Virtual Host Configs ##
    include /etc/nginx/conf.d/*.conf;
        

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        index index.php index.html index.htm index.nginx-debian.html;

        server_name [censored];

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

       location ~ .php$ {
                                   try_files $uri /index.php =404;
                                   fastcgi_pass localhost:9000;
                                   fastcgi_index index.php;
                                   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                                   include fastcgi_params;

                           }

        location ~ /.ht {
                deny all;
        }
}

server {
        server_name brokenshit.[censored].com www.brokenshit.[censored].com;

        root /var/www/html/Production;
        index index.php;

        rewrite ^/l/(.*)$ /lead_details.php?id=$1 last;
        rewrite ^/cb/(.*)$ /lead_cob.php?id=$1 last;

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ .php$ {
                try_files $uri /index.php =404;
                fastcgi_pass localhost:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
    }
}
 
Обновить

отправка запросов от почтальона на этот сервер — никаких проблем, нормальный ответ без каких-либо ненужных строк

ОБНОВЛЕНИЕ 2
  • service php7.4-fpm restart помогает в течение короткого периода времени
  • auto_prepend_file = none в php.ini помогает в течение короткого периода времени
  • pfpinfo(); действительно, при каждом обновлении страницы отображаются различные параметры auto_prepend_file, allow_url_include и disable_functions

Ответ №1:

похоже, что изменение listen с 9000 на 127.0.0.1:9000 в /etc/php/7.4/fpm/pool.d/www.conf решении проблемы с запросом в ответе