@aaalllsss

Как в nginx сделать ридерект с httpS на http только одной страницы?

Имеется 2 сервера и 1 ip, на одном сервере nginx, на другом apache2 и несколько сайтов
сделал вот такой конфиг для проксирования при помощи nginx на apache, установил let's encrypt и все нормально работает

proxy.conf

server {
    if ($host = kp.site1.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = site1.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = site3.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = site2.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen            80;
        server_name       site1.com site2.com kp.site1.com site3.com;

        access_log       /var/log/nginx/ssl-access.log;

        location / {
                proxy_pass            http://10.10.10.20/;
                proxy_redirect        off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_pass_header Set-Cookie;
        }
}

server {
        listen            443;
        server_name       site1.com site2.com kp.site1.com site3.com;

        access_log       /var/log/nginx/ssl-access.log;

        location / {
                proxy_pass            http://10.10.10.20/;
                proxy_redirect        off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_pass_header Set-Cookie;
        }
    ssl_certificate /etc/letsencrypt/live/site2.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/site2.com/privkey.pem; # managed by Certbot
}

но нужно отдавать одну конкретную страницу site1.com/blabla/bla.php по http, каким образом это сделать?

добавление

location = https://site1.com/blabla/bla.php {
    root http://site1.com/blabla/bla.php;
  }


не работает, либо я что-то не так делаю
  • Вопрос задан
  • 767 просмотров
Решения вопроса 1
@aaalllsss Автор вопроса
заменяем редирект всего
if ($host = site1.com) {
     return 301 https://$host$request_uri;
}

на
if ($request_uri = /) {
	return 301 https://$host$request_uri;
}

включить редирект с https://site1.com/blabla/bla.php на site1.com/blabla/bla.php
if ($request_uri = /blabla/bla.php) {
	return 301 http://$host$request_uri;
}

итоговый конфиг для site1.com
server {
	if ($request_uri = /) {
	   return 301 https://$host$request_uri;
    }


        listen            80;
        server_name       site1.com;

        access_log       /var/log/nginx/http-access.log;
		error_log		 /var/log/nginx/http-error.log;

        location / {
                proxy_pass            http://10.10.10.20;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
        }
}

server {
	if ($request_uri = /blabla/bla.php) {
	   return 301 http://$host$request_uri;
    }
        listen            443;
        server_name       site1.com;

        access_log       /var/log/nginx/https-access.log;
		error_log		 /var/log/nginx/https-error.log;

        location / {
                proxy_pass            http://10.10.10.20;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
        }
    ssl_certificate /etc/letsencrypt/live/site1.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/site1.com/privkey.pem; # managed by Certbot
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sashkets
@sashkets
Прекратил отвечать после 24.02.2022
посмотрите http на https

думаю идея станет яснА
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы