Задать вопрос
@shevlyakovn

Настройка редиректа на https nginx?

Задача сделать редирект на https на уровне nginx, но один подраздел /test/* должен работать на http. Есть конфиг с редиректом всех разделов на https

server {
	server_name test.ru www.test.ru;
	charset UTF-8;
	disable_symlinks if_not_owner from=$root_path;
	index index.html index.php;
	root $root_path;
	set $root_path /var/www/test/data/www/test.ru;
	access_log /var/www/httpd-logs/test.ru.access.log ;
	error_log /var/www/httpd-logs/test.ru.error.log notice;
	include /etc/nginx/vhosts-includes/*.conf;
	location / {
		location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
			try_files $uri $uri/ @fallback;
			expires 3d;
		}
		location / {
			try_files /does_not_exists @fallback;
		}
		location ~ [^/]\.ph(p\d*|tml)$ {
			try_files /does_not_exists @fallback;
		}
	}
	
	location @fallback {
		proxy_pass http://127.0.0.1:8080;
		proxy_redirect http://127.0.0.1:8080 /;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
		access_log off ;
	}
	ssi on;
	listen 99.99.999.999:80;
	return 301 https://$host$request_uri;
}


Получается добавить секцию и сделать редирект для нее, но как использовать в location отрицание? Мне нужно что бы все адреса в разделе сайта /test/ работали на http
  • Вопрос задан
  • 293 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@xtreme
Снимаю порчу по SSH :)
 Может я не врубаюсь, но у вас тут что-то непонятное. Куча локейшнов, а в конце - редирект. А зачем тогда тут куча локейшнов (+вложенных локейшнов)? Эта куча все равно не работает.

server {
  listen 99.99.999.999:80;
  server_name test.ru www.test.ru;
  index index.html index.php;
  access_log /var/www/httpd-logs/test-test.ru.access.log ;
  error_log /var/www/httpd-logs/test-test.ru.error.log;

  location /test/ {
    root /var/www/test/data/www/test.ru;
    #Тут параметры для локейшна test и т.д.
  }
  
  location / {
    return 301 https://test.ru$request_uri;
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@alegzz
изюм в конфигах nginx в том, что location выбирается с наибольшим совпадением (за исключением локейшенов с регекспами). так что читайте выше ответ
Ответ написан
Комментировать
sashkets
@sashkets
Прекратил отвечать после 24.02.2022
ридерект http на https

похожий случай
Ответ написан
Комментировать
@shevlyakovn Автор вопроса
всем спасибо, решение xtreme верное, в комментарии к записи, я выложил, то что заработало у меня
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы