> Какой будет вывод? Правильно: 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; }