Redirect nginx

jay15 nginx-forum на forum.nginx.org
Ср Авг 26 09:35:30 UTC 2020


Всем привет. В 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;
        }
    }
}


Подскажите плииз как быть.

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,289197,289197#msg-289197



Подробная информация о списке рассылки nginx-ru