Назад | Перейти на главную страницу

Nginx + WordPress: слишком длинный URI запроса 414

Я использую Nginx с php-fpm на моем сервере, чтобы вести свой блог Wordpress.

Когда кто-то делится моим сайтом на Facebook, некоторые параметры добавляются Facebook, и URL-адрес выглядит так:

https://jp.rlauzier.com/2013/07/les-courriels-et-la-securite-quelques-notions-a-savoir/?fb_action_ids=268110373331078&fb_action_types=og.likes&fb_source=other_multiline&action_object_map2%710B 3A434166526690497% 7D & action_type_map =% 7B% 22268110373331078% 22% 3A% 22og.likes% 22% 7D & action_ref_map =% 5B% 5D

Я проверил свои журналы, и у меня есть "414 Request-URI Too Long" с этим запросом. Я пытаюсь добавить large_client_header_buffers в свой файл конфигурации Nginx, но безрезультатно.

Однако, если вы используете только обычный URL (https://jp.rlauzier.com/2013/07/les-courriels-et-la-securite-quelques-notions-a-savoir/) все работает исправно.

Вот мой файл конфигурации:

server {
    listen          443;
    server_name     jp.rlauzier.com;

    ssl on;
    ssl_certificate         /etc/nginx/ssl/jp.rlauzier.com.crt;
    ssl_certificate_key     /etc/nginx/ssl/jp.rlauzier.com.key;

    include /var/www/jp.rlauzier.com/public_html/nginx.conf;

    location / {
            root   /var/www/jp.rlauzier.com/public_html/;
            index  index.php index.html index.htm;

            if ($request_uri ~* \.(ico|css|js|gif|jpe?g|png)$) {
                    expires max;
                    break;
            }

            try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
            root           /var/www/jp.rlauzier.com/public_html/;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
    }

    location ~ /(\.|wp-config.php|nginx.conf|readme.html|license.txt) {
            return 404;
    }
}

server {
    listen       80;
    server_name  jp.rlauzier.com rlauzier.com;

    rewrite     ^ https://jp.rlauzier.com$request_uri? permanent;
}

Из где-нибудь в Интернете:

Скорее всего, вы пытаетесь настроить client_header_buffer_size / large_client_header_buffers на чистом виртуальном сервере {}. Это не сработает, поскольку синтаксический анализ заголовков запросов происходит до того, как станет известен заголовок Host (и будет выбран виртуальный сервер), поэтому синтаксический анализ выполняется в контексте сервера по умолчанию для прослушиваемого сокета.

Вам необходимо настроить client_header_buffer_size / large_client_header_buffers на сервере по умолчанию (или на уровне http).

Нашел виноватого ... Лучше плагин безопасности WP!

Есть возможность ограничить длину URL-адресов.

Тем не менее, этот плагин великолепен, но по умолчанию добавляет множество настроек для защиты установки Wordpress.

Спасибо всем за помощь!