
در این مقاله نحوه بهینه سازی سرورهای اوبونتو برای میزبانی وب سایت خود با استفاده از وب سرور ngin x را به شما آموزش می دهیم.
MC را با دستور نصب کنید:
sudo apt نصب mc
بهینه سازی وب سرور
در حالی که ما Nginx را به عنوان یک وب سرور داشتیم، ابتدا آن را بهینه کردیم.
HTTP/2 را در Nginx فعال کنید
اولین قدم در پیکربندی Nginx برای TTFB/تأخیر سریعتر با HTTPS این است که مطمئن شوید HTTP/2 فعال است.
HTTP/2 برای اولین بار با Nginx نسخه 1.9.5 عرضه شد تا جایگزین پروتکل spdy شود.
فعال کردن ماژول HTTP/2 در Nginx آسان است. شما فقط باید کلمه کلیدی http2 را در بلوک سرور به فایل پیکربندی Nginx اضافه کنید (به عنوان مثال /etc/nginx/sites-enabled/sitename). و به یاد داشته باشید که HTTP/2 نیاز به فعال شدن HTTPS دارد.
listen 443 ssl http2; سپس بارگذاری مجدد سرویس Nginx را انجام دهید و تمام!
service nginx reload کش sesion SSL را فعال کنید
چرا باید حافظه پنهان جلسه SSL را فعال کنیم؟ با اتصالات HTTPS، به جای اتصال کاربران نهایی از طریق رفت و برگشت، اتصال به یک دست دادن اضافی نیاز دارد. با این حال، استفاده از HTTP/2 و فعال کردن Nginx ssl_session_cache عملکرد سریعتر HTTPS را برای اتصالات اولیه تضمین میکند و به سادگی بسیار سریعتر از بارگیری صفحه http است.
میتوانید Nginx را طوری پیکربندی کنید که این کش را بین همه کارگران به اشتراک بگذارد. و در حالی که داشتن یک نمونه چند پردازنده به شدت توصیه می شود.
1 مگابایت می تواند حدود 4000 جلسه را ذخیره کند. ما 20 مگابایت و کش TTL (زمان استفاده مجدد مجاز) را در پیکربندی قرار دادیم زیرا انتظار داریم بار سنگینی روی سرور وجود داشته باشد:
ssl_session_cache shared:SSL:20m; # holds approx 80000 sessions ssl_session_timeout 2h; # 2 hours for Cache TTL TLS (همچنین به عنوان امنیت لایه حمل و نقل نیز شناخته می شود) - یک پروتکل رمزنگاری است که برای تامین امنیت ارتباطات از طریق یک شبکه کامپیوتری طراحی شده است. جایگزین SSL شد. من حتی یک تشبیه می کنم که TLS در واقع نسل بعدی SSL است که منسوخ شده و تحت تأثیر حملات POODLE قرار گرفته است. پروتکل TLS شامل دو لایه است: رکورد TLS و پروتکل های دست دادن TLS. درک این نکته مهم است که عملیات TLS برای منابع بسیار گران است، به طوری که حتی چندین فرآیند کارگر برای اجرا در سیستم های چند پردازنده ای مورد نیاز است. عملیات Handshake TLS از نظر بارگذاری و زمان اجرا «دشوارترین» است. بنابراین، بهترین راهحل بهینهسازی جلسه است: اتصالات مداوم، حافظه پنهان، کلیدهای استاتیک و فعال کردن OCSP Stapling. به همین دلیل است که ما بهینه سازی را با فعال کردن کش جلسه SSL آغاز کردیم. Keepalive - اتصال مداوم استفاده از اتصالات مداوم، پردازش چندین درخواست را به صورت همزمان در یک اتصال ممکن می کند.
server { ... keepalive_timeout 90; ... } بلیط های session پروتکل TLS میتواند از بلیطهای جلسه برای از سرگیری جلسه استفاده کند، در صورتی که مشتری از آن پشتیبانی کند (خانوادههای مرورگر Chromium و Firefox). برای انجام این کار، سرور TLS یک بلیط جلسه، رمزگذاری شده با کلید خود و شناسه کلید را برای مشتری ارسال می کند. کلاینت جلسه امن را با ارسال آخرین بلیط به سرور در طول اولیه سازی رویه TLS Handshake از سر می گیرد. سپس سرور جلسه را با توجه به پارامترهای ذخیره شده از سر می گیرد.
server { ... ssl_session_ticket_key current.key; ssl_session_ticket_key prev.key; ssl_session_ticket_key prevprev.key; ... } منگنه OCSP پروتکل وضعیت گواهی آنلاین یک مکانیسم تأیید اعتبار گواهی SSL است که جایگزین پروتکل کندتر فهرست لغو گواهی (CRL) می شود. هنگام استفاده از CRL، مرورگر لیست ابطال گواهی را دانلود می کند و گواهی فعلی را بررسی می کند که زمان اتصال را افزایش می دهد. هنگام استفاده از OCSP، مرورگر یک درخواست تأیید را به آدرس OCSP ارسال می کند و در پاسخ وضعیت گواهی را دریافت می کند که می تواند سرورهای مرجع صدور گواهینامه (CA) را به شدت بارگیری کند. برای استفاده از این پروتکل، از OCSP Stapling استفاده می شود - صاحب گواهی به طور مستقل در یک بازه زمانی معین از سرور OCSP نظرسنجی می کند و پاسخی را که حاوی یک امضا است ذخیره می کند. سپس پاسخ از طریق بسط درخواست وضعیت گواهی به Handshake TLS متصل می شود. به این ترتیب سرورهای CA تعداد زیادی درخواست را که حاوی اطلاعات حساس در مورد دیدگاه های کاربر نیز هستند دریافت نمی کنند. برای فعال کردن OCSP Stapling به سادگی چند خط اضافه کنید:
server { ... ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/nginx/ssl/sitename.crt; ... }
امنیت حمل و نقل شدید
برای وادار کردن مرورگر به استفاده از پروتکل HTTPS، مکانیزمی به نام Strict Transport Security وجود دارد.
وقتی چنین هدری را از سرور دریافت می کند، مرورگر متوجه می شود که حتی پس از دنبال کردن اتصال HTTP باید از پروتکل HTTPS استفاده کند.
این دستورالعمل به جلوگیری از برخی حملات کمک می کند، به خصوص اگر سرور از HTTP به HTTPS هدایت نشود.
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
اندازه بافر SSL را کاهش دهید
گزینه ssl_buffer_size Nginx اندازه بافر مورد استفاده برای ارسال داده از طریق HTTPS را مشخص می کند. به طور پیش فرض، ssl_buffer_size روی 16k تنظیم شده است. این یک رویکرد ارزش «پیشفرض» خوب است که برای پاسخهای بزرگ طراحی شده است.
با این حال، برای به حداقل رساندن TTFB (زمان تا اولین بایت)، اغلب بهتر است از مقدار کمتری استفاده کنید، و این به پیکربندی شما بستگی دارد. در مثال مشتری خود، ما تنظیم کردیم:
ssl_buffer_size 4k;
رمزهای SSL و پیاده سازی Diffie-Hellman
در ادامه این لینک می توانید توضیح دهید که چرا باید از گروه قوی Diffie-Hellman استفاده کنید.
مرورگرهای مدرن، از جمله گوگل کروم، موزیلا فایرفاکس و مایکروسافت اینترنت اکسپلورر، حداقل اندازه گروه را به 1024 بیت افزایش داده اند. توصیه می کنیم یک گروه 2048 بیتی ایجاد کنید، اما اگر پارانوئید هستید، 4096 را انتخاب کنید:
openssl dhparam -out dhparams.pem 2048 در Nginx config گزینه ssl_ciphers در بلوک سرور قرار می گیرد:
server { ... ssl_prefer_server_ciphers on; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_dhparam /etc/nginx/ssl/dhparams.pem; ... }
پست بهینه سازی سرور اوبونتو اولین بار در Server.ir | نگرش جهانی، میزبانی ایرانی.