پیکربندی Nginx برای عملکرد و امنیت

در این آموزش خواهیم دید که چگونه می توانیم وب سرور Nginx را برای یک محیط تولید پیکربندی کنیم.


یک وب سرور در یک محیط تولید با یک سرور وب در یک محیط آزمایش از نظر عملکرد ، امنیت و غیره متفاوت است.

به طور پیش فرض ، یک بار تنظیم موفقیت آمیز برای یک سرور وب Nginx وجود دارد ، پس از نصب با موفقیت. با این حال ، پیکربندی پیش فرض برای محیط تولید به اندازه کافی مناسب نیست. بنابراین ما در مورد چگونگی پیکربندی Nginx برای عملکرد بهتر در هنگام سنبله سنگین و عادی ترافیک و چگونگی تأمین امنیت آن از کاربرانی که قصد سوء استفاده از آن را دارند تمرکز خواهیم کرد.

اگر Nginx را روی دستگاه خود نصب نکرده اید ، می توانید نحوه انجام این کار را در اینجا بررسی کنید. این روش نحوه نصب Nginx را بر روی پلتفرم یونیکس نشان می دهد. Nginx را از طریق فایلهای مبدأ نصب کنید زیرا Nginx از پیش ساخته برخی از ماژول های مورد استفاده در این آموزش را ندارد.

الزامات

شما باید موارد زیر را روی دستگاه خود نصب کرده و مطمئن باشید که این آموزش را روی هر پلتفرم مبتنی بر Debian مانند Ubuntu اجرا می کنید..

  • اوبونتو یا هر سیستم عامل دیگر مبتنی بر دبیان
  • wget
  • Vim (ویرایشگر متن)

همچنین ، شما نیاز به اجرای برخی از دستورات در این آموزش به عنوان کاربر اصلی از طریق دستور sudo دارید.

درک ساختار پیکربندی Nginx

در این بخش به موارد زیر خواهیم پرداخت:

  • ساختار Nginx
  • بخش هایی از قبیل یک رویداد ، HTTP و نامه
  • نحو معتبر Nginx

در پایان این بخش ، ساختار پیکربندی Nginx ، هدف یا نقش بخش ها و همچنین نحوه تعریف بخشنامه های معتبر در داخل بخش ها را خواهید فهمید..

فایل پیکربندی کامل Nginx دارای یک ساختار منطقی است که از دستورالعمل های گروه بندی شده به تعدادی بخش مانند بخش رویداد ، بخش http ، بخش نامه و غیره تشکیل شده است..

پرونده پیکربندی اولیه در /etc/nginx/nginx.conf قرار دارد ، در حالی که سایر پرونده های پیکربندی در / etc / nginx قرار دارند.

متن اصلی

این بخش یا متن شامل دستورالعمل های خارج از بخش های خاص مانند بخش نامه است.

دستورالعمل های دیگری مانند nginx کاربر؛ ، working_processes 1؛ ، error_log /var/log/nginx/error.log هشدار دهید؛ و pid /var/run/nginx.pid را می توان در بخش اصلی یا متن قرار داد.

اما برخی از این دستورالعمل ها مانند پردازنده های کارگر نیز می توانند در بخش رویدادها وجود داشته باشند.

بخش ها

بخش های Nginx پیکربندی ماژول های Nginx را تعریف می کند.

به عنوان مثال ، بخش http پیکربندی را برای ماژول ngx_http_core تعریف می کند ، بخش رویداد پیکربندی را برای ngx_event_module تعریف می کند در حالی که بخش نامه تنظیمات مربوط به ngx_mail_module را تعریف می کند..

می توانی چک کنی اینجا برای لیست کاملی از بخش های Nginx.

بخشنامه ها

دستورالعمل های Nginx از یک نام متغیر و تعدادی از استدلال مانند موارد زیر تشکیل شده است:

work_processes یک نام متغیر است در حالی که خودکار به عنوان یک آرگومان عمل می کند.

working_processes auto؛

همانطور که در بالا آمده است ، دستورالعملها با نیمه کلون خاتمه می یابد.

سرانجام ، پرونده پیکربندی Nginx باید مجموعه خاصی از قوانین را رعایت کند. در زیر نحو معتبر تنظیمات Nginx وجود دارد:

  • بخشنامه های معتبر با یک نام متغیر شروع می شوند و سپس با یک یا چند استدلال دنبال می شوند
  • تمام بخشنامه های معتبر با نیمه کلونی خاتمه می یابد.
  • بخش ها با بندهای فرفری تعریف شده اند {
  • یک بخش را می توان در بخش دیگری تعبیه کرد
  • پیکربندی خارج از هر بخش بخشی از پیکربندی جهانی Nginx است.
  • خطوطی که با علامت هش # شروع می شوند ، نظرات هستند.

تنظیم Nginx برای عملکرد

در این بخش ، Nginx را پیکربندی می کنیم تا در حین ترافیک سنگین و افزایش سن ترافیک عملکرد بهتری داشته باشد.

ما می خواهیم نحوه پیکربندی را بررسی کنیم:

  • کارگران
  • فعالیت I / O دیسک
  • فعالیت شبکه
  • بافر
  • فشرده سازی
  • ذخیره
  • زمان پایان

هنوز هم ، در داخل محیط مجازی فعال شده ، دستورات زیر را تایپ کنید تا در فهرست Nginx تغییر کرده و محتوای آن را لیست کنید.

سی دی nginx && ls

جستجوی پوشه را کشف کنید. در داخل این پوشه پرونده nginx.conf قرار دارد.

ما برای پیکربندی Nginx از این پرونده استفاده خواهیم کرد

اکنون دستورات زیر را برای حرکت به پوشه conf و اجرای پرونده nginx.conf با ویرایشگر vim اجرا کنید.

CD CF
sudo vim nginx.conf

در زیر تصویری از نحوه ظاهر شدن فایل nginx.conf به طور پیش فرض ارائه شده است.

کارگران

برای اینکه Nginx بتواند عملکرد بهتری داشته باشد ، باید کارگران را در بخش رویدادها پیکربندی کنیم. پیکربندی کارگران Nginx شما را قادر می سازد تا ارتباطات را از مشتری بطور موثر پردازش کنید.

با فرض اینکه ویرایشگر vim را بسته نکردید ، برای ویرایش پرونده nginx.conf بر روی دکمه i روی صفحه کلید فشار دهید.

موارد زیر را در قسمت رویدادها مطابق شکل زیر کپی و جایگذاری کنید:

مناسبت ها {
working_processes auto؛
working_connections 1024؛
working_rlimit_nofile 20960؛
multi_accept در؛
mutex_accept در؛
mutex_accept_delay 500ms؛
استفاده از epoll؛
epoll_events 512؛
}

working_processes: این بخشنامه تعداد کارگران Nginx را کنترل می کند. مقدار این بخشنامه به طور خودکار تنظیم شده است تا Nginx بتواند تعداد هسته های موجود ، دیسک ها ، بار سرورها و زیر سیستم را تعیین کند. با این وجود می توانید با اجرای دستور lscpu در ترمینال تعداد هسته را کشف کنید.

working_connections: این بخشنامه مقدار تعداد اتصالات همزمان را که توسط یک کارگر باز می شود تعیین می کند. مقدار پیش فرض 512 است اما ما آن را به 1.024 تنظیم می کنیم تا به یک کارگر اجازه دهد یک اتصال خیلی همزمان از مشتری را بپذیرد.

Working_rlimit_nofile: این بخشنامه به نوعی مربوط به کارگران است. به منظور رسیدگی به اتصال همزمان بزرگ ، آن را روی مقدار زیادی تنظیم می کنیم.

multi_accept: این بخشنامه به کارگر امکان می دهد که اتصالات زیادی را در هر زمان به صورت همزمان بپذیرد. صف در این زمینه به سادگی به معنای دنباله ای از اشیاء داده است که منتظر پردازش هستند.

mutex_accept: این بخشنامه بصورت پیش فرض خاموش است. اما از آنجا که ما بسیاری از کارگران را در Nginx پیکربندی کرده ایم ، باید آن را همانطور که در کد بالا نشان داده شده است روشن کنیم تا کارگران بتوانند اتصالات جدید را یک به یک بپذیرند.

mutex_accept_delay: این بخشنامه تعیین می کند که یک کارگر چه مدت باید منتظر بماند تا یک اتصال جدید را بپذیرد. پس از روشن شدن قبول_موتکس ، یک قفل mutex برای یک بازه زمانی مشخص شده توسط قبول_موتاکس_دلای به کارگر اختصاص داده می شود. هنگامی که بازه زمانی به پایان رسید ، کارگر بعدی در خط آماده پذیرش اتصالات جدید است.

استفاده: این بخشنامه روش پردازش اتصال از مشتری را مشخص می کند. در این آموزش تصمیم گرفتیم که مقدار را روی epoll تنظیم کنیم زیرا در حال کار روی یک پلتفرم اوبونتو هستیم. روش epoll موثرترین روش پردازش برای سیستم عامل های لینوکس است.

epoll_events: مقدار این بخشنامه تعداد رویدادهایی را که نگینکس به هسته منتقل می کند ، مشخص می کند.

دیسک I / O

در این بخش ، فعالیت I / O ناهمزمان در Nginx را پیکربندی می کنیم تا به آن اجازه دهیم انتقال داده های مؤثر و بهبود اثربخشی حافظه نهان را انجام دهد..

دیسک I / O به سادگی به نوشتن و خواندن عملیات بین هارد دیسک و رم اشاره دارد. ما از آن استفاده خواهیم کرد ارسال فایل() برای ارسال پرونده های کوچک درون هسته عمل می کند.

می توانید از بخش http ، بخش مکان و بخش سرور برای بخشنامه های این منطقه استفاده کنید.

بخش مکان ، بخش سرور را می توان در بخش http قرار داد یا در آن قرار داد تا تنظیمات قابل خواندن باشد.

کد زیر را درون قسمت مکان تعبیه شده در قسمت HTTP کپی و جایگذاری کنید.

مکان / pdf /
sendfile در؛
aio on؛
}

مکان / صوتی /
Directio 4m
Directio_alignment 512
}

sendfile: برای استفاده از منابع سیستم عامل ، مقدار این دستورالعمل را روشن کنید. sendfile داده ها را بین توصیف کننده های فایل در فضای هسته سیستم عامل بدون انتقال به بافر برنامه انتقال می دهد. این دستورالعمل برای ارائه پرونده های کوچک استفاده می شود.

Directio: این بخشنامه با اجازه خواندن و نوشتن به طور مستقیم به برنامه ارسال می شود. Directio یک ویژگی فایل سیستم در هر سیستم عامل مدرن است. این بخشنامه برای ارائه پرونده های بزرگتر مانند فیلم استفاده خواهد شد.

aio: این بخشنامه وقتی تنظیم شده است برای عملکرد نوشتن و خواندن ، چندین رشته را فعال می کند. چند رشته ای یک مدل اعدام است که به چندین موضوع اجازه می دهد تا همزمان با به اشتراک گذاشتن منابع فرآیند میزبانی خود ، جداگانه از یکدیگر را اجرا کنند..

directio_alignment: این بخشنامه مقدار اندازه بلوک را به انتقال داده اختصاص می دهد. این مربوط به بخشنامه Directio بود.

لایه شبکه

در این بخش ما از دستورالعمل هایی مانند tcp_nodelay و tcp_nopush استفاده خواهیم کرد تا از بسته های کوچک منتظر بمانیم تا یک بازه زمانی مشخص در حدود 200 میلی ثانیه قبل از ارسال آنها به طور همزمان.

معمولاً وقتی بسته ها به “قطعات” منتقل می شوند ، آنها تمایل به اشباع شبکه بسیار پر بار دارند. بنابراین جان ناگل ساخت الگوریتم بافر برای حل این مسئله هدف از الگوریتم بافر سازی Nagle جلوگیری از اشباع بسته های کوچک شبکه بسیار پر بار است.

کد زیر را در قسمت HTTP کپی و جایگذاری کنید.

http

tcp_nopush on؛
tcp_nodelay روشن؛

}

tcp_nodelay: این بخشنامه به طور پیش فرض غیرفعال است و اجازه می دهد تا بسته های کوچک قبل از ارسال به طور همزمان منتظر یک دوره مشخص باشند. برای اینکه اجازه دهید همه داده ها به طور همزمان ارسال شود ، این بخشنامه فعال می شود.

tcp_nopush: از آنجا که ما دستورالعمل tcp_nodelay را فعال کرده ایم ، بسته های کوچک به یکباره ارسال می شوند. با این حال ، اگر هنوز هم می خواهید از الگوریتم بافر جان ناگل استفاده کنید ، ما همچنین می توانیم tcp_nopush را قادر سازیم که بسته های دیگری را به یکدیگر اضافه کند و همه آنها را به یکباره ارسال کنیم.

بافر

بیایید نگاهی به نحوه پیکربندی بافرهای درخواست در Nginx بیندازیم تا به طور موثر درخواستها رسیدگی شود. بافر یک ذخیره سازی موقت است که داده ها برای مدتی نگه داشته و پردازش می شود.

می توانید موارد زیر را در بخش سرور کپی کنید.

سرور {

client_body_buffer_size 8k؛
client_max_body_size 2m؛
client_body_in_single_buffer در؛
client_body_temp_pathtemp_files 1 2؛
client_header_buffer_size 1m؛
large_client_header_buffers 4 8k؛

}

مهم است که بدانیم آن خطوط بافر چه کاری انجام می دهند.

client_body_buffer_size: این بخشنامه اندازه بافر را برای بدنه درخواست تعیین می کند. اگر قصد دارید وب سرور را روی سیستم های 64 بیتی اجرا کنید ، باید مقدار آن را 16k تنظیم کنید. اگر می خواهید سرور را روی سیستم 32 بیتی اجرا کنید ، مقدار آن را روی 8k تنظیم کنید.

client_max_body_size: اگر قصد دارید بارگذاری پرونده های بزرگ را انجام دهید ، باید این بخشنامه را حداقل یا بیشتر از 2 متر تنظیم کنید. به طور پیش فرض ، روی 1 متر تنظیم شده است.

client_body_in_file_only: اگر شما بخشنامه client_body_buffer_size را با نماد هشتگ # غیرفعال کرده اید و این سرویس گیرنده_body_in_file_only تنظیم شده است ، Nginx سپس بافرهای درخواست را در پرونده موقت ذخیره می کند. این برای محیط تولید توصیه نمی شود.

client_body_in_single_buffer: بعضی اوقات تمام بدنه درخواست در بافر ذخیره نمی شود. بقیه آن در پرونده موقت ذخیره یا نوشته شده است. اما اگر قصد دارید بافر درخواست کامل را در یک بافر واحد ذخیره یا ذخیره کنید ، باید این بخشنامه را فعال کنید.

client_header_buffer_size: شما می توانید از این بخشنامه برای تنظیم یا اختصاص یک بافر برای هدرهای درخواست استفاده کنید. می توانید این مقدار را بر روی 1 متر تنظیم کنید.

large_client_header_buffers: این بخشنامه برای تنظیم حداکثر تعداد و اندازه برای خواندن عنوانهای درخواست بزرگ استفاده می شود. می توانید حداکثر تعداد و اندازه بافر را دقیقاً روی 4 و 8k تنظیم کنید.

فشرده سازی

فشرده سازی مقدار داده منتقل شده از طریق شبکه روش دیگری برای اطمینان از عملکرد بهتر سرور وب شماست. در این بخش برای فشرده سازی داده ها از دستورالعمل هایی مانند gzip ، gzip_comp_level و gzip_min_length استفاده خواهیم کرد.

کد زیر را مطابق شکل زیر در قسمت http قرار دهید:

http

gzip روی؛
gzip_comp_level 2؛
gzip_min_l طول 1000؛
gzip_types text / xml text / css؛
gzip_http_version 1.1؛
gzip_vary در؛
gzip_disable "MSIE [4-6] \."؛

}

gzip: اگر می خواهید فشرده سازی را فعال کنید ، مقدار این بخشنامه را روشن کنید. به طور پیش فرض ، غیرفعال است.

gzip_comp_level: برای تعیین سطح فشرده سازی می توانید از این بخشنامه استفاده کنید. به منظور هدر رفتن منابع CPU ، لازم نیست سطح فشرده سازی را خیلی بالا تنظیم کنید. بین 1 تا 9 می توانید سطح فشرده سازی را بر روی 2 یا 3 تنظیم کنید.

gzip_min_length: حداقل طول پاسخ را برای فشرده سازی از طریق قسمت هدر پاسخ طول محتوا تنظیم کنید. می توانید آن را روی بیش از 20 بایت تنظیم کنید.

gzip_types: این بخشنامه به شما امکان می دهد نوع پاسخی را که می خواهید فشرده سازی کنید انتخاب کنید. به طور پیش فرض ، متن / html نوع پاسخ همیشه فشرده می شود. همانطور که در کد بالا نشان داده شده است می توانید نوع پاسخ دیگری مانند text / css را اضافه کنید.

gzip_http_version: این بخشنامه به شما اجازه می دهد حداقل یک نسخه HTTP یک درخواست برای پاسخ فشرده را انتخاب کنید. می توانید از مقدار پیش فرض 1.1 استفاده کنید.

gzip_vary: هنگامی که بخشنامه gzip فعال است ، این بخشنامه قسمت هدر را اضافه می کند Vary: قبول کردن رمزگذاری به پاسخ.

gzip_disabled: برخی از مرورگرها مانند Internet Explorer 6 از فشرده سازی gzip پشتیبانی نمی کنند. این دستورالعمل از قسمت header درخواست User-Agent برای غیرفعال کردن فشرده سازی برای مرورگرهای خاص استفاده می کند.

ذخیره

از ویژگی های حافظه پنهان برای کاهش تعداد دفعات بارگیری همان داده های چند بار استفاده می کند. Nginx از طریق بخشنامه open_file_cache ویژگی هایی را برای ذخیره داده های محتوای استاتیک ارائه می دهد.

می توانید این بخشنامه را در قسمت سرور ، مکان و بخش http قرار دهید.

http

حداکثر open_file_cache = 1000 غیرفعال = 30s؛
30_ open_file_cache_valid؛
open_file_cache_min_uses 4؛
open_file_cache_errors on؛

}

open_file_cache: این بخشنامه بصورت پیش فرض غیرفعال است. اگر می خواهید حافظه پنهان را در Nginx نصب کنید ، آن را فعال کنید. این بخشنامه فوق داده های پرونده ها و فهرست هایی را که معمولاً توسط کاربران درخواست می شود ، ذخیره می کند.

open_file_cache_valid: این بخشنامه حاوی اطلاعات پشتیبان در داخل بخشنامه open_file_cache است. شما می توانید از این بخشنامه برای تعیین یک دوره معتبر معمولاً در چند ثانیه استفاده کنید و پس از آن دوباره اطلاعات مربوط به پرونده ها و دایرکتوری ها دوباره تأیید شود.

open_file_cache_min_uses: Nginx معمولاً بعد از یک دوره عدم فعالیت براساس open_file_cache_min_uses اطلاعات را درون بخشنامه open_file_cache پاک می کند. شما می توانید از این بخشنامه برای تعیین حداقل دسترسی برای مشخص کردن دسترسی به پرونده ها و فهرست ها استفاده کنید.

open_file_cache_errors: شما می توانید از این بخشنامه استفاده کنید تا به Nginx اجازه دهید خطاهایی مانند “اجازه رد” یا “دسترسی به این پرونده را نتواند” هنگام دسترسی به پرونده ها ذخیره کند. بنابراین در هر زمان به منبعی که حق انجام این کار را نداشته باشد به منبعی قابل دسترسی است ، نگینکس همان گزارش خطا را “اجازه رد” نمایش می دهد.

زمان پایان

پیکربندی زمان بندی با استفاده از دستورالعمل هایی مانند Keepalive_timeout و Keepalive_requests برای جلوگیری از هدر رفتن اتصالات طولانی مدت در منابع.

در قسمت HTTP کد زیر را کپی و جایگذاری کنید:

http

Keepalive_timeout 30s؛
Keepalive_requests 30؛
send_timeout 30s؛

}

Keepalive_timeout: اتصالات را حدود 30 ثانیه زنده نگه دارید. پیش فرض 75 ثانیه است.

Keepalive_requests: تعدادی از درخواست ها را برای زنده نگه داشتن برای مدت زمانی خاص پیکربندی کنید. می توانید تعداد درخواست ها را بر روی 20 یا 30 تنظیم کنید.

Keepalive_disable: اگر می خواهید ارتباط نگهدارنده را برای گروه خاصی از مرورگرها غیرفعال کنید ، از این بخشنامه استفاده کنید.

send_timeout: یک زمان بندی برای انتقال داده به مشتری تنظیم کنید.

پیکربندی امنیتی برای Nginx

موارد زیر فقط روی نحوه پیکربندی ایمن Nginx به جای یک برنامه وب تمرکز دارد. بنابراین ما به حملات مبتنی بر وب مانند تزریق SQL و غیره نخواهیم رسید.

در این بخش به چگونگی پیکربندی موارد زیر خواهیم پرداخت:

  • دسترسی به پرونده ها و دایرکتوری ها را محدود کنید
  • پیوندها را برای نظارت بر فعالیتهای مخرب پیکربندی کنید
  • جلوگیری از DDoS
  • لیست فهرست را غیرفعال کنید

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

بیایید در مورد چگونگی محدود کردن دسترسی به پرونده ها و فهرست های حساس از طریق روش های زیر بررسی کنیم.

با استفاده از تأیید هویت HTTP

ما می توانیم با ایجاد درخواست احراز هویت از طرف کاربران یا حتی سرپرستها ، دسترسی به پرونده های حساس یا مناطقی را که برای مشاهده عمومی در نظر گرفته نشده اند محدود کنیم. اگر نصب نکرده اید ، دستور زیر را نصب کنید تا یک ابزار ایجاد پرونده رمز عبور نصب کنید.

برنامه های نصب-apache-apt-get

در مرحله بعدی ، مانند تصویر زیر ، یک فایل رمز عبور و یک کاربر با استفاده از ابزار htpasswd ایجاد کنید. ابزار htpasswd توسط برنامه apache2-utils تهیه شده است.

sudo htpasswd -c / etc / apache2 / .htpasswd mike

می توانید تأیید کنید که رمز عبور کاربر و رمز تصادفی را از طریق دستور زیر ایجاد کرده اید

گربه و غیره / apache2 / .htpasswd

در داخل قسمت مکان ، می توانید کد زیر را وارد کنید تا با استفاده از بخشنامه auth_basic ، احراز هویت را در اختیار کاربران قرار دهید..

محل / مدیر {

basic_auth "منطقه مدیر"؛
auth_basic_user_file / etc / apache2 / .htpasswd؛

}

با استفاده از بخشنامه Allow

علاوه بر بخشنامه basic_auth ، ما می توانیم از دستورالعمل اجازه برای محدود کردن دسترسی استفاده کنیم.

در داخل قسمت مکان ، می توانید از کد زیر استفاده کنید تا آدرس های IP مشخص شده به منطقه حساس دسترسی پیدا کنند.

محل / مدیر {
اجازه 192.168.34.12؛
اجازه 192.168.12.34
}

پیوندها را برای نظارت بر فعالیتهای مخرب پیکربندی کنید

در این بخش ، سیاهههای مربوط به خطا و دسترسی را پیکربندی می کنیم تا به طور خاص درخواست های معتبر و نامعتبر را رصد کنیم. می توانید این سیاههها را بررسی کنید تا دریابید چه کسی در یک زمان خاص وارد سیستم شده است یا اینکه کدام کاربر به یک پرونده خاص و غیره دسترسی داشته است.

error_log: به شما امکان می دهد ورود به یک پرونده خاص مانند syslog یا stderr را تنظیم کنید. همچنین می توانید سطح پیام های خطایی را که می خواهید وارد شوید ، تعیین کنید.

access_log: به نوشتن درخواست کاربران به پرونده Access.log اجازه می دهد

در قسمت HTTP می توانید از موارد زیر استفاده کنید.

http

access_log logs / access.log ترکیب شده است.
log_logs / log.log هشدار می دهند؛

}

جلوگیری از DDOS

با روش های زیر می توانید از Nginx در برابر حمله DDOS محافظت کنید:

محدود کردن درخواست های کاربران 

می توانید از دستورالعمل limit_req_zone و limit_req استفاده کنید تا میزان درخواست درخواست شده توسط کاربران را در عرض چند دقیقه محدود کنید.

کد زیر را در قسمت مکان تعبیه شده در قسمت سرور اضافه کنید.

limit_req_zone $ binary_remote_addr zone = یک: نرخ 10m = 30r / m؛

سرور {
مکان /admin.html
limit_req zone = یک؛
}

}

تعداد اتصالات را محدود کنید 

می توانید از دستورالعملهای limit_conn و limit_conn_zone استفاده کنید تا اتصال به مکانها یا مناطق خاصی محدود شود. به عنوان مثال ، کد زیر 15 اتصال از مشتری را برای یک دوره خاص دریافت می کند.

کد زیر به قسمت مکان می رود.

limit_conn_zone $ binary_remote_addr zone = افزودنی: 10m؛

سرور {

محل / محصولات / {
limit_conn add 10؛

}
}

اتصالات کند را خاتمه دهید   

شما می توانید از دستورالعمل های timeout مانند client_body_timeout و client_header_timeout استفاده کنید تا کنترل کنید چه مدت Nginx منتظر نوشتن از متن مشتری و عنوان مشتری خواهد بود.

موارد زیر را در قسمت سرور اضافه کنید.

سرور {
client_body_timeout 5s؛
client_header_timeout 5s؛
}

همچنین ایده خوبی خواهد بود که با اعمال فشار دادن راه حل های مبتنی بر ابر که در اینجا گفته شد ، حملات DDoS را در لبه متوقف کنید.

لیست فهرست را غیرفعال کنید

برای جلوگیری از لیست دایرکتوری همانطور که در کد زیر نشان داده شده است می توانید از دستورالعمل auto_index استفاده کنید. برای غیرفعال کردن لیست فهرست باید آن را روی مقدار خاموش تنظیم کنید.

محل / {
auto_index خاموش؛
}

نتیجه

ما وب سایت Nginx را تنظیم کرده ایم تا به طور مؤثر و ایمن از آن در برابر سوءاستفاده بیش از حد در یک محیط تولید استفاده کند. اگر از Nginx برای برنامه های وب با اینترنت استفاده می کنید ، برای عملکرد و امنیت بهتر باید از CDN و امنیت مبتنی بر cloud استفاده کنید..

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map