LINUX.ORG.RU

Redirect nginx

 ,


0

1

Всем привет. В 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 отдельно - https://site.com/my_api/set/my_api/set - это не дирректория на веб сервере. Глобально нужно, чтобы код был сразу 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;
        }
    }
}

Не получается. Направьте плиз в нужное русло.


Добавь отдельный локейшен /my_api/set/ в секции server

И если не слишком старый nginx, то
Changes with nginx 1.15.0 05 Jun 2018
*) Change: the «ssl» directive is deprecated; the «ssl» parameter of the «listen» directive should be used instead.

zolden ★★★★★ ()
Ответ на: комментарий от zolden

Не совсем понял, как правильно добавить новый location. Можете показать полностью как будет выглядеть секция server.

jay15 ()
Ответ на: комментарий от zolden

По сути мне кажется /my_api/set/ это не location. Это просто POST запрос в таком виде http(s)://site.com/my_api/set, который обрабатывается index.php. На сайте есть Kohana Controller_Locations_Api который интерпретируется как /my_api/set. Там настроена Кохановская система роутинга, которая считывает URL реквеста и распределяет на нужный контроллер.

jay15 ()
Последнее исправление: jay15 (всего исправлений: 2)
Ответ на: комментарий от jay15

В терминах nginx это и есть локейшн.
Не знаю ньюансов с php, обычно это какой-то proxy_pass

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;
        }

    location /my_api/set {
        proxy_pass Kohana_Controller_Locations_Api$request_uri
  }
}

zolden ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.