404 Wordpress через nginx

J
На сайте с 06.07.2011
Offline
169
294

Сайт на wordpress, последнее время много обращений типа

/wp-login2.php

/ep-config_old.php и т д

Как в обход wordpres на уровне nginx сделать 404? Сервер nginx +php-fpm

Aisamiery
На сайте с 12.04.2015
Offline
302
#1

Предположу что вы ищите try_files

Предположу что ваш конфиг должен быть примерно таким

location / {
    try_files $uri /index.php$is_args$args;
}

location ~ \.php$ {
    try_files $uri =404;
    
    include fastcgi.conf;
    fastcgi_intercept_errors on;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;            
}
Module ngx_http_core_module
  • nginx.org
Directives If disabled, redirects issued by nginx will be relative. Enables or disables the use of asynchronous file I/O (AIO) on FreeBSD and Linux: On FreeBSD, AIO can be used starting from FreeBSD 4.3. Prior to FreeBSD 11.0, AIO can either be linked statically into a kernel: or loaded dynamically as a kernel loadable module: On Linux, AIO can...
Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
J
На сайте с 06.07.2011
Offline
169
#2
Aisamiery #:

Предположу что вы ищите try_files

Предположу что ваш конфиг должен быть примерно таким

Спасибо, но не работает.

Вот мой конфиг:


server {
    listen      1.1.1.1:80;
    server_name test.com.com www.test.com.com;
    root        /home/admin/web/test.com.com/public_html;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/test.com.com.log combined;
    access_log  /var/log/nginx/domains/test.com.com.bytes bytes;
    error_log   /var/log/nginx/domains/test.com.com.error.log error;


#    expires 1d;
#    add_header Pragma "public";

#fastcgi_read_timeout 300;
#fastcgi_buffers 8 256k;
#fastcgi_buffer_size 128k;
#fastcgi_intercept_errors on;
#include fastcgi_params;


    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

#    location /xmlrpc.php {
#        include    /etc/nginx/conf.d/allowip.inc*;
#       deny all;
#    }

# location /wp-admin/ {
#        try_files $uri $uri/ /index.php?$args;
#        fastcgi_pass    127.0.0.1:9007;
#        fastcgi_index index.php;
#        include fastcgi_params;
#        fastcgi_param SCRIPT_FILENAME $request_filename;
#        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
#            expires     max;
#        }
#        include    /etc/nginx/conf.d/allowip.inc*;
#        deny all;
#}



location /wp-login.php {
        include    /etc/nginx/conf.d/allowip.inc*;
        deny all;

            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }

            fastcgi_pass    127.0.0.1:9007;
            fastcgi_index   wp-login.php;
            include         /etc/nginx/fastcgi_params;
        }


    location / {
include /etc/nginx/blockbyhostname.conf;
add_header X-Robots-Tag "index, follow";
        try_files $uri $uri/ /index.php?$args;

rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml$ "/index.php?xml_sitemap=params=$2" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml\.gz$ "/index.php?xml_sitemap=params=$2;zip=true" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html$ "/index.php?xml_sitemap=params=$2;html=true" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html.gz$ "/index.php?xml_sitemap=params=$2;html=true;zip=true" last;


    location ~ \.(js|css|png|jpg|jpeg|gif|ico|html|woff|woff2|ttf|svg|eot|otf)$ {
    add_header "Access-Control-Allow-Origin" "*";
    expires 1M;
    access_log off;
    add_header Cache-Control "public";
        }


        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
        }

        location ~ [^/]\.php(/|$) {

#  location ~ \wp-login.php$ {
#        include    /etc/nginx/conf.d/allowip.inc*;
#        deny all;

            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }


        if ($allowed_country = no) {
                    return 444;
                            }

#if ($http_user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)"){
#if ($http_user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"){
#    return 403;
#    }

#if ($http_user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"){
#    return 403;
#    }

    # Access deny for bots
    # See bots list in the /etc/nginx/nginx.conf
    if ($limit_bots = 1) {
    return 444;
                      }


            fastcgi_pass    127.0.0.1:9007;
            fastcgi_index   index.php;
            include         /etc/nginx/fastcgi_params;
        }
    }

#}
    
error_page  403 /error/404.html;
#    error_page  404 /error/404.html;

error_page 404 @foobar;

location @foobar {
    rewrite  .* / permanent;
    }
    error_page  500 502 503 504 /error/50x.html;

    location /error/ {
        alias   /home/admin/web/test.com.com/document_errors/;
    }

    location ~* "/\.(htaccess|htpasswd)$" {
        deny    all;
        return  404;
    }

    location /vstats/ {
        alias   /home/admin/web/test.com.com/stats/;
        include /home/admin/conf/web/test.com.com.auth*;
    }



location /mega {
    alias /home/admin/web/mega/;


    location ~ ^/mega/(.*\.php)$ {
        alias /home/admin/web/mega/$1;
        fastcgi_pass 127.0.0.1:9007;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }
    location ~* ^/mega/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
        alias /home/admin/web/mega/$1;
    }
}




#    include     /etc/nginx/conf.d/mega.inc*;
    include     /etc/nginx/conf.d/phpmyadmin.inc*;
    include     /etc/nginx/conf.d/phppgadmin.inc*;
    include     /etc/nginx/conf.d/webmail.inc*;

    include     /home/admin/conf/web/nginx.test.com.com.conf*;
}
LEOnidUKG
На сайте с 25.11.2006
Offline
1753
#3
А цель какая конечная? Ну запрашивают несуществующий файл, получают 404 от WP. В чём смысл то? У вас WP перегружает сервер из-за 404 страницы? Может быть надо облегчить 404 страницу в WP и проблема уйдёт?
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
J
На сайте с 06.07.2011
Offline
169
#4
LEOnidUKG #:
А цель какая конечная? Ну запрашивают несуществующий файл, получают 404 от WP. В чём смысл то? У вас WP перегружает сервер из-за 404 страницы? Может быть надо облегчить 404 страницу в WP и проблема уйдёт?

Ну обычная 404 страница будет только с текстом "Page not found"

А при обращении к wordpress, идёт поиск страницы, прогрузка всех плагинов. Излишняя нагрузка.

Таких обращений бывает в секунду по 100 штук, когда пытаются wordpress хакнуть.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий