9 / 9 / 0
Регистрация: 18.01.2010
Сообщений: 71
1

Proxy_rass regexp

20.02.2019, 16:03. Показов 1421. Ответов 7

Author24 — интернет-сервис помощи студентам
Всем по привету.

Организация, в которой я работаю, блочит очень большое кол-во сайтов. Можно на каждый нужный сайт отправлять заявку, и ждать когда его разблочат... но это долго.

Есть домашний сервер, где можно проксировать такого рода сайты. Но тут столкнулся с проблемой на одном из них: подтяжка стилей, скриптов и картинок происходит с субдоменов.

Т.е.
somedomain.ru - основной сайт
sub.somedomain.ru - подгрузка стилей и скриптов
sub(\d*)?.somedomain.ru - подгрузка картинок

здесь и ежу понятно что нужно использовать регулярку, но, сволоч, не работает

для удобства восприятия и тестирования вынес основной домен отдельный конфиг

конфиг по основному
Код
server {
    listen *:80;
    server_name somedomain.my-domain.net;
    error_log /var/log/nginx/somedomain.my-domain.net.log;

    location / {
        root /var/www/null;
        try_files $uri @static;
    }
    location @static {
        include 'somedomain.conf';
        fastcgi_param HTTP_HOST somedomain.ru;
        proxy_set_header HOST somedomain.ru;
        proxy_pass [url]https://somedomain.ru;[/url]
        proxy_set_header X-Real-IP $remote_addr;
    }
}
somedomain.conf
Код
proxy_cookie_domain somedomain.ru somedomain.my-domain.net;
proxy_set_header Accept-Encoding "";

subs_filter https://(sub\d*\.)?somedomain.ru http://$1somedomain.my-domain.net ir;
Здесь все отлично: сайт открывает, ссылки меняет. Естественно, по замененным ссылкам ничего не открывает. Для этого пишу второй конфиг с регуляркой по субдоменам:

Код
server {
    listen *:80;
    server_name ~^(?<prefix>sub\d*)\.somedomain\.my-domain\.net$;
    error_log /var/log/nginx/somedomain.my-domain_error.net.log;

    location / {
        root /var/www/null;
        try_files $uri @static;
    }
    location @static {
        fastcgi_param HTTP_HOST $prefix.somedomain.ru;
        proxy_set_header HOST $prefix.somedomain.ru;
        proxy_pass https://$prefix.somedomain.ru;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
и вот тут засада. error 502

У меня такое чувство, что не отрабатывает переменная $prefix в инструкции proxy_pass
хотя делал по этому мануалу http://nginx.org/ru/docs/http/... egex_names

как быть?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2019, 16:03
Ответы с готовыми решениями:

REGEXP
Здравствуйте. Имеется таблица customers (содержимое на скриншоте). Далее делаю запрос SELECT...

Regexp
Доброго всем вечера! Не могли бы вы подсказать как построить регулярное выражение для парсинга...

RegExp C++
Хочу использовать в программе регулярные выражения. Нашел в интернете PCRE (pcre.org) и обертку к ...

RegExp
Добрый день всем ! Не могу ни как разбраться с одной задачкой на тему RegExp нужно буквально ...

7
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
20.02.2019, 17:09 2
Выбран неподходящий инструмент. Следует использовать vpn или socks.
0
9 / 9 / 0
Регистрация: 18.01.2010
Сообщений: 71
20.02.2019, 17:15  [ТС] 3
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Выбран неподходящий
тем не менее, он имеет право существовать

здесь уже дело принципа - "почему не работает?"
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
20.02.2019, 17:39 4
Так и саморез можно молотком забить, но это не значит что надо даже пытаться так делать.
0
9 / 9 / 0
Регистрация: 18.01.2010
Сообщений: 71
20.02.2019, 17:56  [ТС] 5
Цитата Сообщение от Jewbacabra Посмотреть сообщение
саморез можно молотком забить
вбитый саморез держится лучше чем вкрученный гвоздь - это факт!

это все слова не относящиеся к теме, а по сути:
мне не так много из порезанных сайтов требуется. и открывать на паблик лишний порты (vpn или socks) совсем не хочется. поэтому хочу воспользоваться уже существующими сервисами. для nginx`a это не составит большого труда
0
1099 / 661 / 397
Регистрация: 07.11.2015
Сообщений: 1,062
20.02.2019, 18:03 6
Лучший ответ Сообщение было отмечено McSim как решение

Решение

Цитата Сообщение от McSim Посмотреть сообщение
"почему не работает?"
http://nginx.org/ru/docs/http/... proxy_pass
В значении параметра можно использовать переменные. В этом случае, если адрес указан в виде доменного имени, имя ищется среди описанных групп серверов и если не найдено, то определяется с помощью resolver’а.
Код
resolver 8.8.8.8;
1
Jewbacabra
20.02.2019, 21:38
  #7

Не по теме:

Цитата Сообщение от McSim Посмотреть сообщение
вбитый саморез держится лучше чем вкрученный гвоздь - это факт!
Это не имеет значения. Результат будет на порядок лучше при использовании подходящего инструмента

0
9 / 9 / 0
Регистрация: 18.01.2010
Сообщений: 71
21.02.2019, 11:11  [ТС] 8
Emilien, спасибо огромное, сработало
вынес resolver 8.8.8.8; в директиву http
0
21.02.2019, 11:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2019, 11:11
Помогаю со студенческими работами здесь

RegExp
Добрый день ! есть вот эти четыре строки Нужно написать RegExp код корый бы выводил, dec hex...

regexp
Почему это не работает? $ma=&quot;ghghhfhfhfhfhfhfghfhh111sdfsdd11111&quot;; echo $ma;...

RegExp
Всем привет , есть текст Ваше имя (Алексей) И нужно средствами JavaScript вывести текст из скобок

RegExp
Добрый день всем ! есть примеры строк: 01001B000020 b01011041 Нужен RegExp для выделения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru