Всем привет. В nginx не силен, но нужно сделать исключение из редиректа.
Есть сайт, там настроено http перенаправлять на https. Вот кусок конфига:
server {
listen 80;
server_name site.com www.site.com;
location /.well-known/acme-challenge/ { alias /var/lib/dehydrated/acme-challenges/; }
location / {
rewrite ^ https://site.com$request_uri? permanent;
}
}
server {
listen 443;
server_name www.site.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;
location / {
rewrite ^ https://site.com$request_uri? permanent;
}
}
Нужно вот такой адрес убрать из редиректа, чтобы он работал по http и https отдельно - http://site.com/my_api/set/ – my_api/set - это не дирректория на веб сервере. По сути мне кажется /my_api/set/ это не location. Это просто POST запрос в таком виде http(s)://site.com/my_api/set, который обрабатывается index.php. На сайте есть Kohana Controller_Locations_Api который интерпретируется как /my_api/set. Там настроена Кохановская система роутинга, которая считывает URL реквеста и распределяет на нужный контроллер.
Глобально нужно, чтобы код был сразу 200, а сечас HTTP/1.1 301 Moved Permanently и потом HTTP/1.1 200 OK.
Пробовал вот так, но это не работает:
server {
listen 80;
server_name site.com www.site.com;
location /.well-known/acme-challenge/ { alias /var/lib/dehydrated/acme-challenges/; }
location / {
if ($request_uri !~ /my_api/set) {
rewrite ^ https://site.com$request_uri? permanent;
}
}
}
Подскажите плииз как быть.