limit_conn + internal location

umask umask at yandex.ru
Thu Dec 18 22:47:17 MSK 2008


Добрый вечер,

имеем

                location / {
                        client_body_buffer_size  256k;
                        proxy_buffers 128 64k;

                        proxy_read_timeout    60;
                        proxy_connect_timeout 3;
                        proxy_pass   http://127.0.0.1:8080;
                        proxy_set_header   X-Real-IP        $remote_addr;
                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                        proxy_set_header   Host             $host;
                }

                location /merge.php {
                        #access_log /tmp/merge.log main;
                        root /tmp/proxy_store;
                        error_page      404 = /fetch$uri;
                }

                location /fetch/ {
                        internal;
                        limit_conn      merging 2;
                        #access_log /tmp/merge.log main;
                        proxy_pass http://127.0.0.1:8080;
                        proxy_temp_path  /tmp/proxy_temp;
                        proxy_store /tmp/proxy_temp/$request_uri;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                        proxy_set_header   Host             $host;
                }


Вопрос. Как будет работать limit_conn в internal location?

Идея такой схемы вот в чём. Если дать юзерам возможноть долбить в бэкенд и сохранять каждый раз новый файл в proxy_temp_path, то можно получить отказ в обслуживании (кончатся какие-нибудь структуры фс, всё начнёт тормозить, легитимный контект (а его мало) не куда будет записать) и limit_conn должен, по идее, решить эту проблему (хотя бы частично).





More information about the nginx-ru mailing list