Disable download .htpasswd file

If you need to disable download .htpasswd file on nginx web server this solution will help.

location  ~* \.(htpasswd)$ {
      deny all;
    }

If you need to disable download all hidden files:

location ~ /\. {
    deny all;
}

Заблокировать бота в nginx

«thesis-research-bot» делает множество обращений в БД и может положить сайт.

для того, чтобы заблокировать доступ этому боту в nginx нужно добавить файл с содержимым

### case insensitive
if ($http_user_agent ~* (thesis-research-bot|"thesis-research-bot")) {
	return 403;
}

в файл .conf в /etc/nginx/vhosts-includes/

Файл может иметь произвольное имя и правила из него подхватываются nginx

После этого необходимо проверить корректность конфигурационных файлов и перезапустить nginx командами

nginx -t
sudo systemctl restart nginx

community.cloudflare.com/t/getting-tons-of-bad-bots-attack-recently/578502

nginx редирект всех страниц, кроме указанных

Для того, чтобы сделать редирект всех страниц одного сайта на такие же адреса на другом сайте, необходимо добавить в конфигурационный файл nginx следующие правила:

location / {
        return 301 https://newsite.com$request_uri;
}

Если же необходимо оставить какие-то из урлов работающими на старом домене, то правило будет выглядеть так:

location ~ ^/(?!(wp-json|wp-admin)) {
   return 301 https://newsite.com$request_uri;
}

 

Задать helo_data в EXIM4

Некоторые почтовые сервисы проверяют данный параметр почты. Также при некорректной настройке данного параметра сервер может попасть под фильтр, например, spamhaus.
По умолчанию EXIM4 подставляет в данный параметр $primary_hostname. Что не совсем правильно, если на сервере много доменов.
Для правильной настройки helo_data необходимо в секцию transports в remote_smtp добавить строку:
helo_data = mail.$sender_address_domain
Файл конфига EXIM располагается в etc/exim4/exim4.conf.template. Также если при установке exim была выбрана опция разбить файл на множество мелких — конфиг может быть в файлах и папках в директории.
После изменения файла нужно выполнить команду service exim4 restart
Проверить, что сервис работает service exim4 status

Код ответа 410 для nginx

Вне server{} прописываем список страниц, для которых нужно добавить данный код ответа

map $uri $gone {
        default 0;
        ~^/sample-page   1;       
        # consider an included file for these
    }

А внутри server{}

 if ($gone) {
        return 410;
    }

nginx изменить conf

Чтобы изменить файл конфигурации сервера:
— Нужно зайти на сервер под суперпользователем
— Затем выполнить sudo su и стать root пользователем
— Выполнить команду vi /etc/nginx/site/site.conf
— Внизу будет зеленым сообщение, что данный файл уже используется нажать edit anymore
— Нажать Shift + ‘i’ для активации режима вставки
— Команда Shift + ‘;’ активирует снизу строку для ввода команды
— Сделать необходимые изменения и сохранить :wq (:q! — выйти без сохранения)
— Затем нужно проверить корректность конфигурации nginx -t
— Перезапускаем nginx коммандой service nginx reload

Не применяются днс хостинга

Очень часто домен покупается в одном месте, а хостинг в другом месте. Чтобы домен начал грузиться с хостинга, необходимо указать его днс у регистратора домена. Письмо с днс хостинга обычно приходит сразу после его покупки.
Если днс хостинга не применяются у регистратора домена, то можно попробовать настроить работу с помощью А записи.
Необходимо создать две А записи

Закрыть wp-admin с помощью .htpasswd на ngnix

Для начала необходимо сделать .htpasswd файл. Сгенерировать его можно с помощью сервиса hostingcanada.org/htpasswd-generator/

Затем файл необходимо разместить в директории сайта, путь будет указан в коде ниже

location ^~ /wp-admin/ {
        auth_basic "Unauthorized";
        auth_basic_user_file /var/www/www-root/data/www/site.name/.htpasswd;     
        try_files $uri $uri/ /index.php?$args;
location ~ [^/]\.ph(p\d*|tml)$ {
       try_files /does_not_exists @php;         
    }               
           }
           
    location ^~ /wp-admin/admin-ajax.php {
                # This is cool because no php is touched for static content.
                # include the "?$args" part so non-default permalinks doesn't break when using query string
                try_files $uri $uri/ /index.php?$args;
 location ~ [^/]\.ph(p\d*|tml)$ {
      try_files /does_not_exists @php;
    }
        }     
        
    location ^~ /wp-admin/js/password-strength-meter.min.js {
                # This is cool because no php is touched for static content.
                # include the "?$args" part so non-default permalinks doesn't break when using query string
                try_files $uri $uri/ /index.php?$args;
 location ~ [^/]\.ph(p\d*|tml)$ {
      try_files /does_not_exists @php;
    }
        }