- Один url в location и два бэкенда, PavelR, 19:44 , 22-Июн-15 (1)
> Здравствуйте. > Пытаюсь сделать что-то такое: > location /url/aaa { > proxy_pass backend1; > } > location /url { > proxy_pass backend2; > } >Как подобное решается? Так и решается, как вы написали. > Но запросы все время попадают на backend2. Значит вы что-то сделали не так, как написали. Попробуйте сделать рестарт.
- Один url в location и два бэкенда, eRIC, 20:16 , 22-Июн-15 (2)
> Здравствуйте. > Пытаюсь сделать что-то такое: > location /url/aaa { > proxy_pass backend1; > } > location /url { > proxy_pass backend2; > } > Но запросы все время попадают на backend2. Делать "location = /url/aaa" нельзя, > т.к. еще бывает /url/aaa/xyz итд. Как подобное решается? Заранее спасибо.location ^~ /url/ { proxy_pass backend2; } location ^~ /url/aaa/ { proxy_pass backend1; }
- Один url в location и два бэкенда, PavelR, 20:27 , 22-Июн-15 (3)
>> Но запросы все время попадают на backend2. Делать "location = /url/aaa" нельзя, >> т.к. еще бывает /url/aaa/xyz итд. Как подобное решается? Заранее спасибо. > location ^~ /url/ { > proxy_pass backend2; > } > location ^~ /url/aaa/ { > proxy_pass backend1; > } Вы читали документацию, зачем нужен модификатор ^~ ? Нет, не читали? А зачем советуете?
- Один url в location и два бэкенда, eRIC, 21:37 , 22-Июн-15 (4) –2
>>> Но запросы все время попадают на backend2. Делать "location = /url/aaa" нельзя, >>> т.к. еще бывает /url/aaa/xyz итд. Как подобное решается? Заранее спасибо. >> location ^~ /url/ { >> proxy_pass backend2; >> } >> location ^~ /url/aaa/ { >> proxy_pass backend1; >> } > Вы читали документацию, зачем нужен модификатор ^~ ? > Нет, не читали? А зачем советуете?читано и это работает. мне тыкнуть в доку? http://nginx.org/ru/docs/http/ngx_http_core_module.html
- Один url в location и два бэкенда, PavelR, 22:18 , 22-Июн-15 (5)
>> Вы читали документацию, зачем нужен модификатор ^~ ? >> Нет, не читали? А зачем советуете? > читано и это работает. Работает и без модификатора ^~. >мне тыкнуть в доку? http://nginx.org/ru/docs/http/ngx_http_core_module.html Тыкните, вам лишним не будет перечитать её и дать ответ на вопрос, зачем нужен модификатор ^~.
- Один url в location и два бэкенда, erera22, 12:16 , 23-Июн-15 (6) –1
>[оверквотинг удален] >>>> т.к. еще бывает /url/aaa/xyz итд. Как подобное решается? Заранее спасибо. >>> location ^~ /url/ { >>> proxy_pass backend2; >>> } >>> location ^~ /url/aaa/ { >>> proxy_pass backend1; >>> } >> Вы читали документацию, зачем нужен модификатор ^~ ? >> Нет, не читали? А зачем советуете? > читано и это работает. мне тыкнуть в доку? http://nginx.org/ru/docs/http/ngx_http_core_module.html То, что это "работает", не значит, что стоит так делать в сознательном состоянии.
- Один url в location и два бэкенда, eRIC, 14:31 , 23-Июн-15 (7)
> То, что это "работает", не значит, что стоит так делать в сознательном > состоянии.вот почему: Проиллюстрируем вышесказанное примером: location = / { [ конфигурация А ] } location / { [ конфигурация Б ] } location /documents/ { [ конфигурация В ] } location ^~ /images/ { [ конфигурация Г ] } location ~* \.(gif|jpg|jpeg)$ { [ конфигурация Д ] } Для запроса “/” будет выбрана конфигурация А, для запроса “/index.html” — конфигурация Б, для запроса “/documents/document.html” — конфигурация В, для запроса “/images/1.gif” — конфигурация Г, а для запроса “/documents/1.jpg” — конфигурация Д. Теперь представь запрос: http://dummy/url/aaa/site.aaa и следующий конфиг:
location /url/aaa { echo "1 block"; } location /url { echo "2 block"; } location ~* \.(url|aaa)$ { echo "3 block"; } Какой будет вывод? Правильно: 3 block
Но автор скажет, мля че за Х, когда он должен отрабатываться 1 block'ом, потому что это подзапросы /url/aaa/* Ну теперь проверь этот конфиг: location ^~ /url/aaa { echo "1 block"; } location ^~ /url { echo "2 block"; } location ~* \.(url|aaa)$ { echo "3 block"; } видимо автору пох* наше обсуждение :)
- Один url в location и два бэкенда, PavelR, 07:11 , 24-Июн-15 (9)
> Какой будет вывод? Правильно: 3 block > Но автор скажет, мля че за Х, когда он должен отрабатываться 1 > block'ом, потому что это подзапросы /url/aaa/* Ну так ситуации разные бывают. Где-то должно отработать 1-м блоком, где-то 3-м. практический пример 1, тут нужна ^~, т.к. это фактически две разных системы, разнесенные по URL: server { ... root /var/lib/roundcube/; location / { index index.php; } ...... location = /robots.txt {} location = /favicon.ico {} location ~* \.(gif|jpg|jpeg|bmp|js|json|exe|css|swf|mp3|mp4|avi|mkv|mov|png|ico|wav|wmv|wma|mpeg|rar|zip|mpg|flv|flac|fla|rm|asf|cur|pdf)$ {} location ^~ /postfixadmin/ { alias /usr/share/postfixadmin/; index index.php;
location ~ \.php$ { fastcgi_pass ....; fastcgi_index index.php; include fastcgi_params; } } .... } практический пример 2, тут не нужна ^~, т.к. это тот же сайт, разнесенный на разные бекенды с общим каталогом статики
server {
... root /var/www/cool.site.example.net/; location / { proxy_pass upstream-user; } location /adminpanel/ { proxy_pass upstream-admin; } ...... location = /robots.txt {} location = /favicon.ico {} location ~* \.(gif|jpg|jpeg|bmp|js|json|exe|css|swf|mp3|mp4|avi|mkv|mov|png|ico|wav|wmv|wma|mpeg|rar|zip|mpg|flv|flac|fla|rm|asf|cur|pdf)$ {} .... } Хотя таки да, варианты с ^~ встречаются чаще, чем без модификатора. Отдельно хочу обратить внимание на то, что модификатором ^~ также отключаются "защитные" локейшны, если они есть: location ~ /\.ht { deny all; } location ~ /\.svn/ { deny all; } location ~ /\.git/ { deny all; }
- Один url в location и два бэкенда, eRIC, 09:28 , 24-Июн-15 (10)
>[оверквотинг удален] > {} > .... > } > Хотя таки да, варианты с ^~ встречаются чаще, чем без модификатора. > Отдельно хочу обратить внимание на то, что модификатором ^~ также отключаются "защитные" > локейшны, если они есть: > location ~ /\.ht { deny all; > } > location ~ /\.svn/ { deny all; } > location ~ /\.git/ { deny all; }да верное замечание, потому что поиск по другим регуляркам не производится
|