Как добавить перенаправление (редирект) в Nginx?
В Nginx правила редиректов задаются в конфигурационных файлах. Основной файл конфигурации Nginx обычно называется nginx.conf, а также могут использоваться отдельные файлы конфигурации для каждого сайта или приложения.
Для выполнения описанных ниже действий возможно понядобятся права суперпользователя root.
Для задания правил редиректов в Nginx, обычно используется блок server в конфигурационном файле. Вот пример простого правила редиректа в Nginx:
server {
listen 80;
server_name example.com;
location /old-url {
return 301 http://example.com/new-url;
}
}
В этом примере, при попытке доступа к example.com/old-url, сервер будет выполнять 301-й редирект на example.com/new-url.
Более сложные правила редиректов можно комбинировать с использованием регулярных выражений и условий. Здесь приведен пример правила редиректа на основе условия:
server { listen 80; server_name example.com; location / { if ($args ~* "^param=value$") { return 301 http://example.com/new-url; } } }
Этот пример показывает, как выполнить редирект на example.com/new-url только при наличии параметра param со значением value в URL.
Важно отметить, что после внесения изменений в конфигурационные файлы Nginx, необходимо перезапустить или перезагрузить сервер Nginx, чтобы изменения вступили в силу.
Где в Nginx находятся отдельные файлы конфигурации для каждого сайта?
В Nginx отдельные файлы конфигурации для каждого сайта обычно хранятся в директории /etc/nginx/conf.d/.
По умолчанию, в основном конфигурационном файле nginx.conf находится директива include указывающая на папку, в которой находятся дополнительные файлы конфигурации. В Ubuntu или Debian, например, конфигурация может быть следующей:
include /etc/nginx/conf.d/*.conf;
Это означает, что все файлы с расширением .conf в директории /etc/nginx/conf.d/ будут включены в основной конфигурационный файл. Вы можете создать свои собственные файлы конфигурации в этой папке или добавить их туда для каждого сайта или приложения.
Вы также можете использовать поддиректории в /etc/nginx/conf.d/ для логической организации файлов конфигурации для каждого сайта. Nginx будет рекурсивно включать все файлы в поддиректориях, если они соответствуют директиве include.
После внесения изменений в файлы конфигурации, не забудьте перезапустить или перезагрузить сервер Nginx, чтобы изменения вступили в силу.
Как перезапустить или перезагрузить сервер Nginx?
Для перезапуска или перезагрузки сервера Nginx вы можете выполнить следующие команды в зависимости от операционной системы:
1. **Перезапуск**:
- В Ubuntu или Debian:
bash sudo service nginx restart
- В CentOS или RHEL:
bash sudo systemctl restart nginx
- В macOS (если вы используете Homebrew):
bash brew services restart nginx
2. **Перезагрузка**:
- В Ubuntu или Debian:
bash sudo service nginx reload
- В CentOS или RHEL:
bash sudo systemctl reload nginx
- В macOS (если вы используете Homebrew):
bash brew services reload nginx
Перезапуск полностью останавливает сервер Nginx, а затем запускает его заново с использованием внесенных изменений в конфигурацию. Перезагрузка применяет изменения в конфигурационных файлах без полного останова сервера.
Обратите внимание, что для выполнения этих команд, вам может потребоваться наличие прав администратора или использование команды sudo.
От Автора
В файле конфигурации сайта в блоке server можно через include подключить отдельный файл, где будут прописаны перенаправления.
Пример содержимого файла конфигурации /etc/nginx/sites-available/example.com.conf:
server {
listen 443 ssl http2;
server_name www.example.com;
root /home/www-root/public_html/example.com;
index index.php index.html index.htm;
# ssl_certificate /etc/ssl/example.com/examplecom.crt;
# ssl_certificate_key /etc/ssl/example.com/examplecom.key;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# include /etc/nginx/default.d/001-restrict.conf;
include /etc/nginx/default.d/002-example-maintenance.conf;
include /etc/nginx/default.d/002-example-not-found.conf;
include /etc/nginx/default.d/003-letsencrypt.conf;
include /etc/nginx/default.d/004-locations-redirect-example-com.conf;
include /etc/nginx/default.d/005-locations-landing-pages-example-com.conf;
include /etc/nginx/default.d/008-phpmyadmin.conf;
}
В файле конфигурации задается путь к подключаемому файлу с перенаправлениями /etc/nginx/default.d/004-locations-redirect-example-com.conf.
Содержимое самого файла 004-locations-redirect-example-com.conf:
# Locations are evaluated in this order: # 1. location = /path/file.ext {} Exact match # 2. location ^~ /path/ {} Priority prefix match -> longest first # 3. location ~ /Paths?/ {} (case-sensitive regexp) # 4. location ~* /paths?/ {} (case-insensitive regexp) -> first match # 5. location /path/ {} Prefix match -> longest first location = /help/articles/old-url/ { return 301 https://www.example.com/help/; }
После добавления правил возможно потребуется перезапустить или перезагрузить сервер Nginx.
Tags: Nginx .htaccess redirect 301 302 перенаправления редиректы
Недавние комментарии
Восстановление конфигурации WinSCP из реестра Windows
[Решено] Chrome: как остановить редирект с http на https
Перенос файлов между серверами напрямую по SSH через SCP
Восстановление конфигурации WinSCP из реестра Windows
Устанавливаем macOS Monterey на VirtualBox на ПК или ноутбуке с Windows 10