Nginx + WordPress:414 请求 URI 太长

Nginx + WordPress:414 请求 URI 太长

我在我的服务器上使用带有 php-fpm 的 Nginx 来运行我的 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_map=%7B%22268110373331078%22%3A434166526690497%7D&action_type_map=%7B%22268110373331078%22%3A%22og.likes%22%7D&action_ref_map=%5B%5D

我检查了我的日志,发现这个请求出现了“414 Request-URI Too Long”的错误。我尝试在 Nginx 配置文件中添加 large_client_header_buffers,但没有结果。

但是,如果您只使用普通 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;
}

答案1

互联网上的某个地方

您很可能正在尝试在纯虚拟服务器{}中配置 client_header_buffer_size/large_client_header_buffers。这不会起作用,因为请求标头解析发生在主机标头已知(并选择虚拟服务器)之前,因此解析发生在侦听套接字的默认服务器上下文中。

您必须在默认服务器(或 http 级别)中配置 client_header_buffer_size/large_client_header_buffers。

答案2

找到了罪魁祸首...更好的 WP 安全插件!

有一个选项可以限制 URL 的长度。

然而,这个插件很棒,但是添加了许多调整来默认保护 Wordpress 安装。

感谢你的帮助!

相关内容