• Как написать правильный rewrite?

    @SergNF Автор вопроса
    Если смотреть логи, то
    Правильно
    http request line: "GET /esp2/main.css HTTP/1.1"
    http uri: "/esp2/main.css"
    http args: ""
    http exten: "css"
    http process request header line
    http header: "Accept: text/css, */*"
    http header: "Referer: http://............vpnki.ru/esp2/"
    http header: "Accept-Language: ru-RU"
    http header: "User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"
    http header: "Cookie: _ga=GA1.2.934471358.1496390570; _ym_uid=149639057047617 . . .
    http header: "Accept-Encoding: gzip, deflate"
    http header: "Host: 192.168.1.16"
    http header done
    . . .
    using configuration "/esp2/"


    НеПравильно
    http request line: "GET /debug HTTP/1.1"
    http uri: "/debug"
    http args: ""
    http exten: ""
    http process request header line
    http header: "Accept: text/html, application/xhtml+xml, */*"
    http header: "Referer: http://............vpnki.ru/esp2/"
    http header: "Accept-Language: ru-RU"
    http header: "User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"
    http header: "Cookie: _ga=GA1.2.934471358.1496390570; _ym_uid=149639057047617 . . .
    http header: "Accept-Encoding: gzip, deflate"
    http header: "Host: 192.168.1.16"
    http header done
    . . .

    using configuration "/"


    Неправильный "uri", поэтому не тот "configuration" - все понятоно.
    Но как-то обмануть можно?
    Ведь, например, в "Referer" есть нужная информация
    http header: "Referer: http://............vpnki.ru/esp2/"

    Может быть можно выбрать location, проанализировав Referer?
  • Как написать правильный rewrite?

    @SergNF Автор вопроса
    Спасибо и за Ваш ответ.
    Естественно этот rewrite я написал.

    location /esp2/ {
    rewrite ^/esp2/(.*)$ /$1 break;
    proxy_pass http://192.168.1.20;
    }

    В итоге
    Корректно
    5a7d669c48297902096058.jpeg
    НеКорректно
    5a7d66a5593a4311646462.jpeg
    Сама страничка (других различий нет)
    5a7d66af413a8812318148.jpeg
  • Как написать правильный rewrite?

    @SergNF Автор вопроса
    Ну вот - опечатался
    как мне ее "увидеть" по адресу
    test2.com/pictures/img.jpg
  • Как написать правильный rewrite?

    @SergNF Автор вопроса
    Спасибо большое за ответ.
    К сожалению, я понимаю, для чего мне rewrite :(
    Когда картинка "по адресу" и все странички "статические" у меня все прекрасно работает по 1му примеру.
    Но вот если страничка создается на лету и/или ссылка на картинки или на другие страницы выглядят как (для второго Вашего примера)
    test.com/img.jpg
    как мне ее "увидеть" по адресу
    test.com/pictures/img.jpg
    Причем location / я применять не могу, хотя все мои сайты (по отдельности !) открываются корректно.
    К сожалению "сайт из первого письма" я положил и удаленно поднять его не могу, но вот более сложный случай - Веб страничка asus'овскго роутера с прошивкой Padavan'а
    5a7c17632c9cf369430926.jpeg
    В моем первом примере я, вроде бы "поймал" тот случай, когда одну ????? обрабатывал rewrite, "подставлял значение из location", открывал по ссылке новую страницы (ив адресной строке было test.com + /из location/ + то, что надо). А вторую ????? не обрабатывал, срабатывал "location /", который и вел не туда.
    ????? - именно этого я и не понимаю, что должен и может (!) обрабатывать rewrite.
  • Как написать правильный rewrite?

    @SergNF Автор вопроса
    ...а сайтов внутри сети много

    Например, есть такой "принтесервер для 3d принтеров" octoprint, для него я нашел "location"
    location /octo/ {
    proxy_pass http://octo;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme $scheme;
    proxy_set_header X-Script-Name /octo;

    location ~ /octo/(?(downloads|static|api|plugin).*) {
    proxy_pass octo/$pathinfo;
    proxy_set_header Host $host;
    }

    location /octo/sockjs {
    proxy_pass octo/sockjs; # NO trailing slash here!
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    }
    }

    Ничего не понял :(, но работает корректно.
    А вот для "IoT'ного девайса" такого примера я не найду и прошивку с веб-страничкой не изменю. :(
  • Как перенаправить несколько location на разные сервера?

    @SergNF Автор вопроса
    Вот теперь совсем все понятно. Спасибо.
    Тем более что (у Вас в ссылку попала запятая)
    По умолчанию этот модуль не собирается

    А на моей "платформе" не собирается ничего :(
  • Как перенаправить несколько location на разные сервера?

    @SergNF Автор вопроса
    А дальше :)
    Про ту "фигу, которую я увидел в книге" (слеш в конце адреса - не обратил внимание в описании) спасибо.
    Учтите, что этот реврайт никак не влияет на само тело запроса (т.е. если у вас вернется html со ссылкой a href="/", то она такой и останется)

    В этом то и вопрос. Т.е. index.html (условно) я открою (уже открыл), но все ссылки на ней (в нем) для меня окажутся недоступны, т.к. идут "мимо" именно этого location
    Т.е. мне надо во все ссылки именного этого "сеанса" добавлять /one, чтобы попадать в нужный location, переходить на нужный серевер и удалять /one.
    А если на "том" сайте cgi или он вообще написан на perl (webmin).
    Вот этого я не понимаю - это хотя бы возможно или нет.
    Если я правильно ориентируюсь в терминах, то мне нужен прямой и/или прозрачный прокси? Вроде бы видел упоминание, что ngnix это не умеет. Надеюсь, что ошибся в терминах и в ... "унынии".