
Обробка переадресацій для веб-сайтів в 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
Готово!