Сайт WordPress с такими вещами, как AJAX, возвращающий 403 (nginx) - PullRequest
0 голосов
/ 07 мая 2019

Я получил сайт WordPress, работающий на Linode. Ниже приведены некоторые инструкции по установке стека LEMP и настройке WordPress.

Я столкнулся с проблемой, когда любые AJAX-запросы возвращают 403. Материал для REST API также возвращает 403 ошибки, поэтому я предполагаю, что эти проблемы связаны.

Стоит отметить, что сайт работает локально на моем MAMP, а также на тестовом сервере в Пантеоне. Только когда я установил их линод, эти проблемы появились.

Вот эта страница вопроса - https://www.gaudenzia.org/locations/ Проверьте консоль, и вы увидите 403 на https://www.gaudenzia.org/wp-admin/admin-ajax.php

Как ни странно, вы можете перейти к https://www.gaudenzia.org/wp-admin/admin-ajax.php напрямую. По какой-то причине он не возвращает 403, а вместо этого выдает 0, что в данном случае является ожидаемым результатом запроса WP AJAX, поскольку мы не помещаем в него данные. Так что, похоже, в этом случае возвращается 200, а не 403.

Что я уже пробовал

На сервере я проверил, что для всех файлов и папок правильно установлены разрешения 644 и 755 соответственно. Они также установлены для правильного владельца.

Конечно, я пытался отключить / удалить плагины на сайте.

Я перепробовал кучу разных модификаций различных конфигурационных файлов на сервере, но все безрезультатно. В основном просто поискать что-то вроде «nginx wordpress ajax 403» и пройти первые 3 страницы результатов, чтобы попробовать возможные исправления.

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

# Trying something to fix AJAX
# from https://givewp.com/documentation/core/frequent-troubleshooting-issues/admin-ajax-blocked/
#add_header 'Access-Control-Allow-Origin' '*';
#add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

server {
    server_name    gaudenzia.org www.gaudenzia.org;
    root           /var/www/gaudenzia.org/public_html;
    index          index index.php index.html index.htm;

    location / {
     # try_files $uri $uri/ /index.php?$args  =404;
      #try_files $uri $uri/ /index.php?$args;
    try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
      fastcgi_pass unix:/run/php/php7.2-fpm.sock;
      include         fastcgi_params;
      fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
      fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }


    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/gaudenzia.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/gaudenzia.org/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

    #include /etc/nginx/common/wpfc-php7.conf;
    #include /etc/nginx/common/wpcommon-php7.conf;
    #include /etc/nginx/common/locations-php7.conf;

    #include /etc/nginx/common/wp-global-restrictions.conf;
    #include /etc/nginx/common/wordpress.conf;

    #include /var/www/gaudenzia.org/nginx_custom/*.conf;
}
server {
    if ($host = www.gaudenzia.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = gaudenzia.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen         80 default_server;
    listen         [::]:80 default_server;
    server_name    gaudenzia.org www.gaudenzia.org;
    return 404; # managed by Certbot




}

Я полагаю, что должна быть какая-то настройка / настройка сервера, о которой я не знаю. Я новичок в настройке серверов (nginx или иным образом).

*** РЕДАКТИРОВАТЬ

Опера - это проблема.

После всех моих попыток выяснить, что не так с сервером, оказалось, что проблема не в сервере. Понял, что сайт работает на компьютерах коллег. Я только столкнулся с 403 при использовании Opera. Другие браузеры работают просто отлично. Похоже, что что-то странное в том, как Opera отправляет запрос XHR в admin-ajax.php, а сервер / WordPress возвращает 403 в результате. Я не знаю, что делает Opera, чтобы все испортить, но это так.

...