@WenSiL

Почему происходит дублирование запроса?

Всем привет! Проблема такая: поднял php стак (nginx + postgres + php-fpm) в docker контейнерах. Написал простейший скрипт, который делает запись в бд:
$pg = @pg_connect("host=$DB_HOST port=$DB_PORT dbname=$DB_NAME user=$DB_USER password=$DB_PASS");
pg_query($pg, 'INSERT INTO msg (name, text) VALUES (\'name1\', \'message\')');

Скрипт называется index.php и по умолчанию отрабатывает на запрос корня сайта (/).
Проблема: при заходе на корень запрос в базу данных выполняется дважды. Причем так происходит только тогда, когда скрипт называется именно index.php. Если переименовать его например в 123.php и обратиться к нему так: localhost/123.php, то все отработает отлично, запрос выполниться один раз. Почему так происходит?

Nginx конфиг:
server {
    listen 80;
    server_name localhost;

    rewrite ^ https://localhost? permanent;
}

server {
    listen 443 ssl http2;
    index index.php;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/hello.local;
    client_max_body_size 35M;
    gzip on;

    ssl on;
    ssl_certificate /etc/nginx/ssl/server-cert.crt;
    ssl_certificate_key /etc/nginx/ssl/server-key.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305 ECDHE-RSA-CHACHA20-POLY1305 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-ECDSA-AES128-SHA ECDHE-RSA-AES256-SHA384 ECDHE-RSA-AES128-SHA ECDHE-ECDSA-AES256-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-RSA-AES256-SHA DHE-RSA-AES128-SHA256 DHE-RSA-AES128-SHA DHE-RSA-AES256-SHA256 DHE-RSA-AES256-SHA ECDHE-ECDSA-DES-CBC3-SHA ECDHE-RSA-DES-CBC3-SHA !DSS !aNULL !eNULL !EXPORT !3DES !DES !RC4 !MD5 !PSK !aECDH !EDH-DSS-DES-CBC3-SHA !EDH-RSA-DES-CBC3-SHA !KRB5-DES-CBC3-SHA";
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    add_header Strict-Transport-Security "max-age=15724800";


    location ~ /libs {
        deny all;
    }

    location / { 
        if (!-e $request_filename){ 
            rewrite ^/(.*) /?$query_string; 
        } 
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}
  • Вопрос задан
  • 364 просмотра
Решения вопроса 2
Melkij
@Melkij
PostgreSQL DBA
Проверьте сколько запросов делает непосредственно браузер.

Например, фавиконка.
Ответ написан
@RidgeA
99.(9)% - /favicon.ico
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
- Доктор, когда я делаю так, мне больно
- Ну не делайте так.

Сначала перенаправляем все запросы к несущестующим файлам на индекс
Потом в индексе делаем безусловный запрос в бд
И тут начинаем удивляться, почему это вдруг запрос срабатывает при каждом обращении к несуществующему файлу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы