WordPress & NGINX 413 при загрузке - PullRequest
0 голосов
/ 29 января 2019

Что ж, это может показаться очень простым, простым и многократно задаваемым вопросом, но если бы в сети был ответ для решения моей проблемы, я бы нашел его в предыдущем5 (!) Дней тщательных исследований и неудачных попыток.

Я получаю сообщение об ошибке 413 от NGINX, когда пытаюсь загрузить немного большие файлы (работает до ~ 8-10 МБ, но не обязательно для каждого файла) в WordPress.Что я сделал:

  1. (Выполнение чистой установки WP около 4 раз)
  2. Проверенные права доступа к каталогу
  3. Изменено client_max_body_size ВЕЗДЕ (даже выполнено полное-текстовый поиск на моем сервере, чтобы изменить его практически везде, даже установить его на 0 везде, чтобы временно полностью отключить ограничение)
  4. Изменены значения конфигурации PHP (да, я убедился, что это правильный php.ini и да, он правильно загружен)
  5. Попытался добавить client_body_in_file_only clean; client_body_buffer_size 32K;
  6. Убедитесь, что в журналах NGINX НЕТ ОШИБКИ ... (действительно нет)
  7. ПровереноНастройки PHP FPM

Да, я перезагружал NGINX и PHP (PHP7.2-FPM) каждый раз, когда вносил изменения в любые конфигурации.Я уже несколько часов гуглю и не знаю, что делать ... То, что я сделал, даже НАМНОГО БОЛЬШЕ, чем обычно нужно, чтобы запустить этот ... Не говоря уже о том, что в моем Laravel все хорошоприложение на сервере (куда я также загружаю большие файлы) ... Я действительно начинаю сомневаться в себе ... Вот мой nginx.conf:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

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

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";

        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # Virtual Host Configs
        ##

        client_max_body_size 0;
        client_body_in_file_only clean;
        client_body_buffer_size 32K;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}


#mail {
#       # See sample authentication script at:
#       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#       # auth_http localhost/auth.php;
#       # pop3_capabilities "TOP" "USER";
#       # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#       server {
#               listen     localhost:110;
#               protocol   pop3;
#               proxy      on;
#       }
#
#       server {
#               listen     localhost:143;
#               protocol   imap;
#               proxy      on;
#       }
#}

Это мой файл конфигурации сервера NGINX (да, я сделалуверен, что он правильно загружен):

upstream php {
        server unix:/var/run/php/php7.2-fpm.sock;
        server 127.0.0.1:9000;
}
server {
        root /var/www/wp;
        index index.php;
        server_name www.example.com example.com;
        client_max_body_size 0;

        location / {
              client_max_body_size 0;
              try_files $uri $uri/ /index.php$is_args$args;
        }
        location ~ \.php$ {
                client_max_body_size 0;
                include snippets/fastcgi-php.conf;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
                fastcgi_connect_timeout 300s;
                fastcgi_read_timeout 300s;
                fastcgi_send_timeout 300s;
        }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    client_max_body_size 0;
    if ($scheme != https) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    server_name example.com www.example.com;
    listen 80;
    return 404; # managed by Certbot
}

Хорошо ... Надеюсь, что может быть хитрость, чтобы заставить это работать ... Я так отчаялся ...: - /

РЕДАКТИРОВАТЬ: Это вывод заголовков Live HTTP (точное содержимое cookie)

POST /wp-admin/admin-ajax.php HTTP/1.1
Host: www.example.com:443
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: wordpress_sec_f828006c09c634a9c87995108de4c055=xxxx; wp-settings-time-1=xxxx; spcsrf=xxxx;andsomemorecookieshere
Origin: https://www.example.com
Referer: https://www.example.com/wp-admin/upload.php
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
X-Requested-With: XMLHttpRequest

HTTP/1.1 200
access-control-allow-credentials: true
access-control-allow-origin: https://www.example.com
access-control-allow-origin: *
cache-control: no-cache, must-revalidate, max-age=0
content-type: application/json; charset=UTF-8
date: Tue, 29 Jan 2019 11:36:35 GMT
expires: Wed, 11 Jan 1984 05:00:00 GMT
referrer-policy: strict-origin-when-cross-origin
server: fbs
set-cookie: spcsrf=cf0870b291b52a7c657c5d3f098b8f6f; Expires=Tue, 29-Jan-19 13:36:35 GMT; Path=/; HttpOnly; SameSite=Strict
status: 200
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-hw: 1548761795.cds116.fr8.hc,1548761795.cds105.fr8.sc,1548761795.cdn2-wafbe01-fra1.stackpath.systems.-.wx,1548761795.cds105.fr8.p
x-robots-tag: noindex

Я должен также отметить, что эта конкретная страница работает за WAF StackPath (включая CDN и т. Д.).Однако я не нашел бы ЛЮБОГО параметра, чтобы изменить что-либо о максимально допустимом размере для переноса (или подобного), и поиск Google «StackPath WAF 413» или «WAF 413» не дал никаких полезных результатов.

...