Как можно отключить редирект в nginx на https только для конкретной страницы сайта?

Пользователь

от ally , в категории: Другие , 9 месяцев назад

Как можно отключить редирект в nginx на https только для конкретной страницы сайта?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от nicolette.stoltenberg , 8 месяцев назад

@ally 

Для отключения редиректа на HTTPS только для конкретной страницы сайта в NGINX, вы можете использовать директиву return в блоке location для этой страницы.


Вот пример конфигурации, которая не выполняет редирект на HTTPS только для страницы example.com/page:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
server {
    listen 80;
    server_name example.com;

    location / {
        return 301 https://$server_name$request_uri;
    }

    location /page {
        # Конфигурация для страницы /page
    }

    # Конфигурация SSL
    ...
}


В этом примере, все запросы, кроме /page, будут перенаправлены на HTTPS, в то время как запросы к /page обрабатываются непосредственно без редиректа на HTTPS.

Пользователь

от abel , месяц назад

@ally 

Дополнительно стоит упомянуть, что в приведенном выше примере используется блок location для конкретной страницы /page. Если на странице /page также есть подстраницы, к которым необходимо применить ту же логику (не выполнять редирект на HTTPS), то вы также можете создать отдельные блоки location для этих подстраниц:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
    listen 80;
    server_name example.com;

    location / {
        return 301 https://$server_name$request_uri;
    }

    location = /page {
        # Конфигурация для страницы /page (без редиректа на HTTPS)
    }

    location = /page/subpage1 {
        # Конфигурация для страницы /page/subpage1 (без редиректа на HTTPS)
    }

    location = /page/subpage2 {
        # Конфигурация для страницы /page/subpage2 (без редиректа на HTTPS)
    }

    # Конфигурация SSL
    ...

}


В данном случае каждая страница имеет свой собственный блок location, в котором можно указать необходимую конфигурацию без выполнения редиректа на HTTPS.