Масові перенаправлення в NGINX
 
 

Масові перенаправлення в NGINX

Обробка переадресацій для веб-сайтів в NGINX (або Apache) - завжди була болем. Тому, що при оновленні свого сайту кожна пошукова система з допомогою ботів продовжує обслуговувати та сканувати старі сторінки і алгоритм перераховує їх у SERP (сторінки результатів пошуку).

Ми розробили нове рішення для NGINX! Створіть підпапку /etc/nginx/snippets/ з використанням /etc/nginx/sites-available/<ime_name> файлів.

	sudo su
	mkdir -p /etc/nginx/snippets/includes/
	cd /etc/nginx/snippets/includes
	touch nc-301-redirects-global.map

	# ймовірно в вас також є інші речі, які можна включити, тому додамо
	touch sa-ciphers.conf
	touch sa-custom.conf
	touch sa-redirects-global.conf
	touch sa-all-includes.conf

 

Модуль MAP для переадресації NGINX вимагає, щоб карта НЕ знаходилась в блоці сервера на доступних сайтах (sym linked пов’язані із включеними сайтами). "Карта" повинна знаходитись в /etc/nginx/nginx.conf. Неймінг, який я використовував для переадресацій nginx, вказує куди вони повинні направлятись, дозволяючи мені збирати файли та перевіряти на помилки.

"nc" - це абревіатура, що вмикатиметься в файлі /etc/nginx/nginx.conf
"sa" - це абревіатура, яка означає, що include буде оброблено в /etc/nginx/sites-available/sitename

 

Спочатку нам потрібно заповнити файл "nc-301-redirects-global.map", який виглядає приблизно так:

map $request_uri $new_uri { 
    default ""; 
    /pwa/app/ /pwa/; 
    /2020/07/my-article/ /my-article/;
    /about-us/ /about/; 
}

 

Тоді всередині вашого файлу /etc/nginx/nginx.conf потрібно включити:

include /etc/nginx/snippets/includes/nc-301-redirects-global.map;

 

Якщо карта включена в глобальний блок http, ми будемо обробляти її всередині файлів розміщених в /etc/nginx/sites-available/. Далі нам потрібно відредагувати наш файл "sa-all-include.conf".

nano /etc/nginx/snippets/includes/sa-all-includes.conf
    # вставте наступні три рядки. Наразі вони порожні.
    touch sa-ciphers.conf
    touch sa-custom.conf
    touch sa-redirects-global.conf

 

всередині віртуального сервера, буде виглядати приблизно так:

server {
    listen 443 ssl;
    server_name www.example.com;
    access_log /var/log/nginx/example-com-access.log;
    error_log /var/log/nginx/example-com-error.log;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    include /etc/nginx/snippets/includes/sa-all-includes.conf;

    location / {
    ....

 

Важливим рядком є /etc/nginx/snippets/includes/sa-all-includes.conf;

На цьому етапі ви зможете запустити "nginx -t", оскільки всі файли, що включені, порожні.

Тепер ми поміщаємо цей код коду у файл /etc/nginx/snippets/includes/sa-redirects-global.conf

# process the map file
 if ($new_uri != "") {
    rewrite ^(.*)$ $new_uri permanent;
 }

 # зупинити погано налаштовані параметри DNS від флуду в логах
 location ~* ^/autodiscover
 {
   return 301 $scheme://example.com$request_uri;
 }

 

Вкінці запустіть команди:

nginx -t
service nginx reload

Готово!

 

Система з готовим інструментом для перенаправлення сторінок