Если Вы хотите чистое решение для Apache bw_mod для Apache 2.0 и mod_bandwidth для Apache 1.3. Они могут отрегулировать пропускную способность Вашего сервера для ограничения использования пропускной способности.
Существует также mod_limitipconn, который препятствует тому, чтобы один пользователь установил много связей с Вашим сервером. mod_cband является другой опцией, но я никогда не использовал его.
Если Вы не хотите смешивать со своей установкой Apache, можно поместить прокси сквида перед Apache. Это дает Вам больше контроля также регулировкой.
Однако в большинстве случаев проблемой являются несколько больших объектов, когда Вы хотите ограничить пропускную способность на IP, и Вы хотите дать нормальное сообщение об ошибке, когда пользователь вытягивает слишком много данных, и Вы блокируете его. В этом случае могло бы быть легче записать Сценарий PHP и хранить информацию доступа во временной таблице в базе данных.
Когда вы меняете корни, вам необходимо настроить второе местоположение для перехода на php:
server {
root /home/tman/dev/project/trunk/data;
index index.php;
# Use location ^~ to prevent regex locations from stealing requests
location ^~ /sqlbuddy {
root /srv/http;
# This location will handle requests containing .php within /sqlbuddy
# and will use the root set just above
location ~* \.php {
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
}
}
location ~* \.php {
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
}
}
Кроме того, если вы не используете URL-адреса в стиле информации о пути, такие как /index.php/foo / bar, вы, вероятно, захотите изменить .php на .php $, чтобы привязать совпадение к концу uri.
Причина в том, что Nginx выберет «лучшее» местоположение
блок:
Исправьте меня, если я ошибаюсь. В настоящее время Nginx не поддерживает глобальную настройку fastcgi. Таким образом, вы должны либо переопределить fastcgi_pass
:
location /sqlbuddy {
root /srv/http;
index index.php;
}
location /sqlbuddy/.+\.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
, либо вы можете проверить $ request_uri
с помощью директивы if
во втором месте
:
location ~ \.php$ {
if ($request_uri ~ /sqlbuddy/.*$) {
root /srv/http;
}
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}