это не о размере, но скорости, которой Вы требуете. SAS является партией быстрее. Однако, потому что набор данных является ~0.5GB, и у Вас есть 4 ГБ, и выращивать уровень является настолько медленным, Вы могли бы также просто загрузить все в память (mysql кэш) и не волноваться о скорости жесткого диска.
Аналогично этому ответу . Идиоматический подход Nginx к подобным проблемам основан на использовании map
.
По сути, вы определяете map
в http
section
map $cookie_proxy_override $my_upstream {
default default-server-or-upstream;
~^(?P<name>[\w-]+) $name;
}
Затем вы просто используете $ my_upstream
в месте
раздел (ы):
location /original-request {
proxy_pass http://$my_upstream$uri;
}
Nginx вычисляет переменные карты лениво, только один раз (на запрос) и когда вы их используете.
Вы сделали, пробуют $http_cookie? http://wiki.nginx.org/HttpRewriteModule
если ($http_cookie ~ * "proxy-target-A") {нечто;}
у меня есть образец, который я использую для обнаружения заголовка запроса на основе udid, и он работает, могли бы быть Вы, получит некоторое представление.
location / {
proxy_set_header Host $http_host;
if ($request_uri ~ ^/(.*)udid=xxxxxxxxxxxxxx(.*)$) {
proxy_pass http://1.1.1.1$request_uri;
break;
}
if ($request_uri ~ ^/(.*)udid=yyyyyyyyyyyyyy(.*)$) {
proxy_pass http://3.3.3.3$request_uri;
break;
}
proxy_pass http://2.2.2.2$request_uri;
}
В конечном итоге мое решение сводится к следующему:
server {
...
set $upstream "default-server-or-upstream";
if ($http_cookie ~ "proxy_override=([\w-]+)") {
set $upstream $1;
}
location /original-request {
proxy_pass http://$upstream/original-application
}
}
Тест выполняется в области server
для каждого запроса (до разрешения фактического перенаправления) и просто используется для установки переменной - очевидно, это поддерживаемое использование модуля перезаписи Nginx. Он также проверяет весь $ http_cookie
, как предложил @Rikih, но включает имя файла cookie, чтобы убедиться, что я не сопоставляю случайные вещи, которые люди могут мне бросать.
Затем в область
, где я хочу выполнить перенаправление, я использую имя переменной, которое либо содержит конфигурацию восходящего потока по умолчанию, либо было перезаписано файлом cookie.