Перенаправление URL-адресов на URL-адрес, отличный от http-адреса, в nginx - redirect


1

Я использую nginx в качестве обратного прокси. Как настроить перенаправление URL-адресов в блоке сервера nginx, чтобы URL-адрес для перенаправления был URL-адресом, отличным от http?

Например, у меня есть url типа:

http://example.com/user_uuid/a0d525aa-d755-11e5-b5d2-0a1d41d68578/14084561234/

Я хочу перенаправить из вышеперечисленного URL-адреса, отличного от http:

sms:14084561234?body:my photo is located at http://example.com/photos/a0d525aa-d755-11e5-b5d2-0a1d41d68578/

Когда этот URL-адрес, отличный от http-адреса, попадает в браузер, открывается приложение родного SMS-устройства, предварительно заполняя SMS с номером телефона 1-408-456-1234, а тело с текстом, появляющимся после ?body в URL-адресе, отличном от http-адреса, Естественно, это применимо только к мобильным устройствам.

Это возможно? Если да, можете ли вы привести мне пример? Обратите внимание, что в первом URL-адресе uuid и число генерируются динамически, основываясь на некоторых предыдущих входах.


Я уже знаю, как реализовать перенаправление в моем коде веб-приложения, но это не вопрос.

Источник
  •  43
  •  1
  • 21 мар 2020 2020-03-21 09:52:54

1 ответ

1

Работает следующая конфигурация:

server {
    listen 99;
    server_name test.so;

    location /user_uuid {
        rewrite /user_uuid/(.+)/([^/]+) "sms:$2?body:my photo is located at http://example.com/$1/" redirect;
    }

}

Пример вывода:

curl -I -H "Host: test.so" http://localhost:99/user_uuid/uuid/phone/

HTTP/1.1 302 Moved Temporarily
Server: nginx/1.7.11
Date: Sat, 20 Feb 2016 00:45:22 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: sms:phone?body:my photo is located at http://example.com/uuid/