Второй день ломаю голову.
Используется reverse proxy схема. Сайт работает по https. Все запросы на http перенаправляются на https. На сайте есть каталог.
Если в запросе к каталогу не указывать закрывающий слеш, то происходит два редиректа:
1. сначала на сайт с http с тем же путём но с закрывающим слешем
2. а после обратно на https с закрывающим слешем.
Как сделать, чтобы редирект вёл сразу на https с закрывающим слешем?
В качестве примера создал поддомен, где это можно посмотреть.
https://apstenu.siava.ru/test > http://apstenu.siava.ru/test/ > https://apstenu.siava.ru/test/
Редиректы проверял с помощью сервисов
https://showredirects.com/
http://www.redirect-checker.org/
Конфиг reverse proxy:
http {
...
server {
listen 80;
server_name apstenu.siava.ru;
return 301 https://apstenu.siava.ru$request_uri;
}
server {
listen 443 ssl http2;
server_name apstenu.siava.ru;
include /etc/nginx/ssl-siava.ru;
access_log off;
location / {
proxy_pass http://192.168.0.2;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
Конфиг backend-сервера 192.168.0.2:
server {
listen 80;
server_name apstenu.siava.ru;
access_log off;
log_not_found off;
root /home/apstenu.siava.ru;
location / {
try_files $uri $uri/ =404;
index index.jpg;
}
location ~* ^.+\.(jpg|htm)$ {
expires 30d;
}
}