Почему в PageSpeed Insights я получаю ошибку "PRI * HTTP/2.0" 400?

Как определить принадлежность бота к определенной стране с использованием модуля GeoIP в Nginx 1.18 на Ubuntu 20.04 и перенаправить этих ботов на определенную страницу, а также блокировать доступ к сайту для всех стран, кроме России, в случае, если условие с страной не выполняется?
  • 18 октября 2023 г. 15:08
Ответы на вопрос 1
Ошибка "PRI * HTTP/2.0" 400, которую вы получаете в PageSpeed Insights, означает, что Nginx обнаружил невалидный префикс в заголовке HTTP/2.0 запроса. Эта ошибка может происходить из-за технических проблем, неподдерживаемой версии протокола или нарушенной конфигурации сервера. 

Для определения принадлежности бота к определенной стране вы можете использовать модуль GeoIP в Nginx 1.18 на Ubuntu 20.04. Ниже приведен пример конфигурации для достижения желаемого результата:

1. Установите модуль GeoIP в Nginx:

   ```
   sudo apt-get install nginx-module-geoip
   ```

2. Сконфигурируйте Nginx для использования модуля GeoIP:

   ```
   sudo nano /etc/nginx/nginx.conf
   ```

   В раздел "http" вставьте следующую строку:

   ```
   geoip_country /path/to/geoip/GeoIP.dat;
   ```

   Замените "/path/to/geoip/GeoIP.dat" путем к файлу GeoIP.dat, который содержит информацию о странах.

3. Создайте прокси-блок для перенаправления ботов на определенную страницу:

   ```
   server {
       listen 80;
  
       location / {
           if ($geoip_country_code != RU) {
               return 301 http://example.com/blocked-page;
           }
  
           ...
           вашего кода
           ...
       }
   }
   ```

   Замените "http://example.com/blocked-page" на URL страницы, на которую вы хотите перенаправить неподдерживаемые боты.

4. Добавьте блокировку доступа к сайту для всех стран, кроме России:

   ```
   server {
       listen 80;
       deny all;
  
       location / {
           allow 127.0.0.1;
           allow RU;
           deny all;
  
           ...
           вашего кода
           ...
       }
   }
   ```

   В данном примере доступ к сайту разрешен только для локального адреса (127.0.0.1) и России (RU). Всем другим странам будет отказано в доступе.

5. Перезапустите Nginx для применения изменений:

   ```
   sudo systemctl restart nginx
   ```

После выполнения этих шагов модуль GeoIP будет использоваться для определения принадлежности ботов к странам, и вам будет разрешено перенаправлять или блокировать доступ в зависимости от страны пользователя.
Похожие вопросы