-
July 24th, 2016, 13:12
#1
عضو انجمن
[آموزش Nginx] محدود کردن سرعت دانلود کاربران
سلام 
خیلی از دوستان به دنبال روشی هستند که در nginx اقدام به محدود کردن سرعت دانلود کاربران کنند یا حتی تعداد کانکشن ها از یک آی پی را محدود کنند و از حمله DoS / DDoS تا حدی جلوگیری کنند.
با ماژول ngx_http_limit_req می توان محدودیت هایی روی اتصالات (Connections) و درخواست ها (Requests) کاربران اعمال کرد.
سناریو اول: محدود سازی سرعت کاربران به ۱ مگابایت بر ثانیه
قبل از شروع بلاک Server یعنی بلاک Http مقدار زیر را تعریف کنید.
کد:
limit_req_zone $binary_remote_addr zone=JZ:10m ;
در VirtualHost (بلاک Server یا Location) بصورت زیر عمل کنید:
سناریو دوم: محدود سازی سرعت کاربران به ۱ مگابایت بر ثانیه پس دانلود ۱۰۰ مگابایت فایل و محدود سازی تعداد کانکشن به ۴ عدد
قبل از شروع بلاک Server یعنی بلاک Http مقدار زیر را تعریف کنید.
کد:
limit_req_zone $binary_remote_addr zone=JZ:10m ;
در VirtualHost (بلاک Server یا Location) بصورت زیر عمل کنید:
کد:
limit_rate_after 100m;
limit_conn JZ 4;
limit_rate 256k;
یک نمونه از Config فایل هایی که برای محدود سازی سرعت دانلود در یک سایت استفاده کردم را به اشتراک میگذارم.
http://pastebin.com/s596hduW
توصیه: حتما پیشنهاد می کنم با Directive های اصلی Nginx آشنا شوید. با Block ها مثل Server و Location و HTTP همینطور.
ویرایش توسط 2JZ : July 24th, 2016 در ساعت 13:16
-
تعداد تشکر ها از2JZ به دلیل پست مفید
-
July 24th, 2016 13:12
# ADS
-
August 11th, 2016, 18:19
#2
پاسخ : [آموزش Nginx] محدود کردن سرعت دانلود کاربران
با سلام
این سناریو بسیاروعالی در زمینه هاستینگ هستش.
برای اپلودسنتر و اینکه تعداد دانلود و آپلود کاربر بدون محدودیت انجام بشه سناریوتون چیه؟
اجازه بدین میخوام سناریو رو گسترده تر کنیم.اگه تمایل داشته باشید.
خسته هم نباشید بابت مقاله بسیار خوبتون
-
تعداد تشکر ها از IrIsT به دلیل پست مفید
-
August 11th, 2016, 19:30
#3
عضو انجمن
پاسخ : [آموزش Nginx] محدود کردن سرعت دانلود کاربران

نوشته اصلی توسط
IrIsT
با سلام
این سناریو بسیاروعالی در زمینه هاستینگ هستش.
برای اپلودسنتر و اینکه تعداد دانلود و آپلود کاربر بدون محدودیت انجام بشه سناریوتون چیه؟
اجازه بدین میخوام سناریو رو گسترده تر کنیم.اگه تمایل داشته باشید.
خسته هم نباشید بابت مقاله بسیار خوبتون
راه سادهترش اینه که دوتا سرور داشته باشیم و سرور پریمیوم هم باید کاربر رو بشناسه حتما
-
تعداد تشکر ها ازHostline به دلیل پست مفید
-
August 11th, 2016, 20:14
#4
پاسخ : [آموزش Nginx] محدود کردن سرعت دانلود کاربران

نوشته اصلی توسط
Hostline
راه سادهترش اینه که دوتا سرور داشته باشیم و سرور پریمیوم هم باید کاربر رو بشناسه حتما
مرسی داداشم.
خوب یک توضیح بیشتر بده.چطوری این کار انجام میشه.
-
تعداد تشکر ها از IrIsT به دلیل پست مفید
-
August 12th, 2016, 22:49
#5
پاسخ : [آموزش Nginx] محدود کردن سرعت دانلود کاربران
من در مستندات سایت nginx با این ماژول ها آشنایی نسبی پیدا کرده بودم اما در اجرای سناریوهای متفاوت به مشکل بر میخوردم.
بسیار عالی و کاربردی
-
تعداد تشکر ها از dynabanner.com به دلیل پست مفید
-
August 13th, 2016, 11:17
#6
عضو انجمن
پاسخ : [آموزش Nginx] محدود کردن سرعت دانلود کاربران

نوشته اصلی توسط
IrIsT
با سلام
این سناریو بسیاروعالی در زمینه هاستینگ هستش.
برای اپلودسنتر و اینکه تعداد دانلود و آپلود کاربر بدون محدودیت انجام بشه سناریوتون چیه؟
اجازه بدین میخوام سناریو رو گسترده تر کنیم.اگه تمایل داشته باشید.
خسته هم نباشید بابت مقاله بسیار خوبتون
سلام. حتما . خیلی خوبه. اگر دوستان هم موافق باشن داخل پست اول اضافه می کنم.
- - - Updated - - -

نوشته اصلی توسط
Hostline
راه سادهترش اینه که دوتا سرور داشته باشیم و سرور پریمیوم هم باید کاربر رو بشناسه حتما
البته بدون سرور دوم هم میشه. کافیه شما Limit zone تعریف کنید.
کد:
limit_req_zone $binary_remote_addr zone=FREE:10m ;
و
کد:
limit_req_zone $binary_remote_addr zone=PREMIUM:10m ;
برای free ها سرعت 64k بذارید (مثال) و برای premium ها هر مقداری که مدنظر هست.
-
-
August 14th, 2016, 11:05
#7
پاسخ : [آموزش Nginx] محدود کردن سرعت دانلود کاربران
سلام و درود
به keepalive هم مربوطه؟تاثیری داره؟
همچنین اگه ورنیش رو هم توضیح بدین باهاش که اونم محدودیت میذاره.اونم تاثیر داره؟
به صورت یک مققاله باشهواا توی سایت بذارم
با اجازه استارتر یکم توضیح رو بیشتر کنم
نمونه ای از طریقه استقاده این ماژول
کد:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { location /search/ { limit_req zone=one burst=5; }
که برای پردازش بیشتر پیغامس 503 میده که میتونید مقدار رو افزایش بدین
کد:
limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s; limit_req_zone $server_name zone=perserver:10m rate=10r/s; server { ... limit_req zone=perip burst=5 nodelay; limit_req zone=perserver burst=10; }
شما مستونید از این ماژول برای جلوگیری از حملات دیداس نیز استفاده کنید
برای توضیحات بیشتر این ماژول از لینک زیروایافده کنید.
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
با تشکر از استارتر
ویرایش توسط IrIsT : August 14th, 2016 در ساعت 11:17
-
تعداد تشکر ها از IrIsT به دلیل پست مفید
-
September 16th, 2016, 22:33
#8
پاسخ : [آموزش Nginx] محدود کردن سرعت دانلود کاربران
سلام
قبل از شروع بلاک Server یعنی بلاک Http مقدار زیر را تعریف کنید.
در VirtualHost (بلاک Server یا Location) بصورت زیر عمل کنید:
دقیقا کجا ؟
-
-
September 16th, 2016, 22:36
#9
عضو انجمن
پاسخ : [آموزش Nginx] محدود کردن سرعت دانلود کاربران

نوشته اصلی توسط
dellserver
سلام
دقیقا کجا ؟
سلام.
دقیقا قبل از شروع
جزء context های اصلیه انجین ایکسه
-
-
September 16th, 2016, 22:37
#10
پاسخ : [آموزش Nginx] محدود کردن سرعت دانلود کاربران
نه منظورم اینه دستور ورودش به اون جا رو بگید
متوجه نمیشم بلاک سرور یا بلاک http کجاس واظهتر بفرمائید
ممنون
-