PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : [آموزش Nginx] محدود کردن سرعت دانلود کاربران



2JZ
July 24th, 2016, 13:12
سلام ;;)


خیلی از دوستان به دنبال روشی هستند که در nginx اقدام به محدود کردن سرعت دانلود کاربران کنند یا حتی تعداد کانکشن ها از یک آی پی را محدود کنند و از حمله DoS / DDoS تا حدی جلوگیری کنند.

با ماژول ngx_http_limit_req می توان محدودیت هایی روی اتصالات (Connections) و درخواست ها (Requests) کاربران اعمال کرد.


سناریو اول: محدود سازی سرعت کاربران به ۱ مگابایت بر ثانیه

قبل از شروع بلاک Server یعنی بلاک Http مقدار زیر را تعریف کنید.



limit_req_zone $binary_remote_addr zone=JZ:10m ;

در VirtualHost (بلاک Server یا Location) بصورت زیر عمل کنید:



limit_rate 1024k;



سناریو دوم: محدود سازی سرعت کاربران به ۱ مگابایت بر ثانیه پس دانلود ۱۰۰ مگابایت فایل و محدود سازی تعداد کانکشن به ۴ عدد

قبل از شروع بلاک 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 همینطور.

IrIsT
August 11th, 2016, 18:19
با سلام
این سناریو بسیاروعالی در زمینه هاستینگ هستش.
برای اپلودسنتر و اینکه تعداد دانلود و آپلود کاربر بدون محدودیت انجام بشه سناریوتون چیه؟
اجازه بدین میخوام سناریو رو گسترده تر کنیم.اگه تمایل داشته باشید.
خسته هم نباشید بابت مقاله بسیار خوبتون

Hostline
August 11th, 2016, 19:30
با سلام
این سناریو بسیاروعالی در زمینه هاستینگ هستش.
برای اپلودسنتر و اینکه تعداد دانلود و آپلود کاربر بدون محدودیت انجام بشه سناریوتون چیه؟
اجازه بدین میخوام سناریو رو گسترده تر کنیم.اگه تمایل داشته باشید.
خسته هم نباشید بابت مقاله بسیار خوبتون

راه ساده‌ترش اینه که دوتا سرور داشته باشیم و سرور پریمیوم هم باید کاربر رو بشناسه حتما

IrIsT
August 11th, 2016, 20:14
راه ساده‌ترش اینه که دوتا سرور داشته باشیم و سرور پریمیوم هم باید کاربر رو بشناسه حتما

مرسی داداشم.
خوب یک توضیح بیشتر بده.چطوری این کار انجام میشه.

dynabanner.com
August 12th, 2016, 22:49
من در مستندات سایت nginx با این ماژول ها آشنایی نسبی پیدا کرده بودم اما در اجرای سناریوهای متفاوت به مشکل بر میخوردم.
بسیار عالی و کاربردی

2JZ
August 13th, 2016, 11:17
با سلام
این سناریو بسیاروعالی در زمینه هاستینگ هستش.
برای اپلودسنتر و اینکه تعداد دانلود و آپلود کاربر بدون محدودیت انجام بشه سناریوتون چیه؟
اجازه بدین میخوام سناریو رو گسترده تر کنیم.اگه تمایل داشته باشید.
خسته هم نباشید بابت مقاله بسیار خوبتون
سلام. حتما . خیلی خوبه. اگر دوستان هم موافق باشن داخل پست اول اضافه می کنم.

- - - Updated - - -


راه ساده‌ترش اینه که دوتا سرور داشته باشیم و سرور پریمیوم هم باید کاربر رو بشناسه حتما
البته بدون سرور دوم هم میشه. کافیه شما Limit zone تعریف کنید.


limit_req_zone $binary_remote_addr zone=FREE:10m ;

و


limit_req_zone $binary_remote_addr zone=PREMIUM:10m ;

برای free ها سرعت 64k بذارید (مثال) و برای premium ها هر مقداری که مدنظر هست.

IrIsT
August 14th, 2016, 11:05
سلام و درود
به 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

با تشکر از استارتر

dellserver
September 16th, 2016, 22:33
سلام


قبل از شروع بلاک Server یعنی بلاک Http مقدار زیر را تعریف کنید.


در VirtualHost (بلاک Server یا Location) بصورت زیر عمل کنید:

دقیقا کجا ؟

2JZ
September 16th, 2016, 22:36
سلام


دقیقا کجا ؟
سلام.
دقیقا قبل از شروع


server {

جزء context های اصلیه انجین ایکسه

dellserver
September 16th, 2016, 22:37
نه منظورم اینه دستور ورودش به اون جا رو بگید
متوجه نمیشم بلاک سرور یا بلاک http کجاس واظهتر بفرمائید
ممنون

2JZ
September 16th, 2016, 22:39
داخل فایل کانفیگ هست.

dellserver
September 16th, 2016, 22:41
داخل فایل کانفیگ هست.
امکانش هست دستور دقیقش بفرمائید ؟
من در مسیر زیر دستوراتی که برای محدود کردن گفته بودید گذاشتم سرور کلا بالا نیومد و http از کار افتاد
nano /etc/ngnix/ngnix.conf

2JZ
September 16th, 2016, 23:31
چیز ثابتی نیست که دستور دقیق داشته باشه.
ممکنه فایل کانفیگ مربوط به virtual host جاهای مختلفی باشه.

dellserver
September 16th, 2016, 23:59
ممنون دوست عزیز ظاهرا یا شما هم مثل همه سایت ها این مطلب رو کپی پیست کردیدیا قصد کمک ندارید
موفق باشید

2JZ
September 17th, 2016, 14:55
ممنون دوست عزیز ظاهرا یا شما هم مثل همه سایت ها این مطلب رو کپی پیست کردیدیا قصد کمک ندارید
موفق باشید

شما در رابطه با ساختار اصلی پیکربندی nginx آشنایی ندارید ، من چی بگم بهتون که کارتون انجام بشه؟