Ubuntu 18.04

نحوه راه اندازی Nginx با پشتیبانی HTTP / 2 در اوبونتو 18.04

Nginx یک سرور مجازی وب منبع باز سریع و قابل اعتماد است. شهرت آن به دلیل اشغال کم حافظه ، مقیاس پذیری بالا ، سهولت پیکربندی و پشتیبانی از طیف گسترده ای از پروتکل ها میباشد.
HTTP / 2 نسخه جدیدی از پروتکل نقل و انتقال Hypertext است که در وب برای ارائه صفحات از سرور مجازی به مرورگر استفاده می شود. HTTP / 2 اولین به روزرسانی عمده HTTP در تقریباً دو دهه اخیر است : HTTP1.1 در سال 1999 به عموم مردم معرفی شد در حالی که صفحه های وب معمولاً فقط یک فایل HTML با شیوه نامه CSS درون خطی بودند. اینترنت از آن زمان به طرز چشمگیری تغییر کرده است، و اکنون ما با محدودیت های HTTP 1.1 روبرو هستیم – پروتکل سرعت انتقال بالقوه را برای اکثر وب سایت های مدرن محدود می کند زیرا قسمت هایی از یک صفحه را در یک صف دانلود می کند (دانلود قسمت قبلی باید قبل از قسمت بعدی کامل شود) ، و به طور متوسط ​​یک صفحه وب مدرن به دانلود حدود 100 درخواست نیاز دارد (هر درخواست یک عکس ، فایل js ، فایل CSS و غیره است).
HTTP / 2 این مشکل را حل می کند زیرا باعث ایجاد چند تغییر اساسی می شود:
• همه درخواست ها به صورت موازی دانلود می شوند ، نه در صف
• هدرهای HTTP فشرده می شوند
• صفحات به عنوان یک باینری ، نه به عنوان یک فایل متنی انتقال پیدا میکنند، که کارآمدتر است
سرور مجازی ها می توانند داده ها را “push” کنندحتی بدون درخواست کاربر ، که سرعت را برای کاربران با تأخیر بالا بهبود می بخشد
اگرچه HTTP / 2 به رمزگذاری نیاز ندارد ، اما توسعه دهندگان دو مرورگر محبوب ، گوگل کروم و موزیلا فایرفاکس ، اظهار داشتند که به دلایل امنیتی از HTTP / 2 فقط برای اتصالات HTTPS پشتیبانی می کنند. از این رو ، اگر تصمیم دارید سرور مجازی هایی را با پشتیبانی HTTP / 2 تنظیم کنید ، باید آنها را با HTTPS نیز ایمن کنید.
این آموزش به شما کمک می کند تا یک سرور مجازی سریع و مطمئن Nginx با پشتیبانی HTTP / 2 تنظیم کنید.
پیش نیازها
قبل از شروع کار ، به چند مورد نیاز خواهیم داشت:
⦁ یک سرور مجازی Ubuntu 18.04 با پیروی از راهنمای تنظیم اولیه سرور مجازی Ubuntu 18.04 ، شامل یک کاربر sudo غیر ریشه و فایروال.
⦁ Nginx که بر روی سرور مجازی شما نصب شده باشد ، و می توانید با دنبال کردن نحوه نصب Nginx در اوبونتو 18.04 ، این کار را انجام دهید.
⦁ نام دامنه پیکربندی شده برای اشاره به سرور مجازی شما. می توانید در Namecheap خریداری کنید یا یکی از آنها را به صورت رایگان در Freenom دریافت کنید.
⦁ گواهی TLS / SSL که برای سرور مجازی شما تنظیم شده است. سه گزینه دارید:
o با دنبال کردن چگونگی ایمن سازی Nginx با Let’s Encrypt در Ubuntu 18.04 می توانید گواهی رایگان از Let’s Encrypt دریافت کنید.
o همچنین می توانید با دنبال کردن نحوه ایجاد یک گواهی SSL خود امضا شده برای Nginx در اوبونتو 18.04 ، یک گواهی خود امضا شده ایجاد و تنظیم کنید.
o می توانید گواهی را از ارائه دهندگان دیگر خریداری کرده و Nginx را پیکربندی کنید تا با پیروی از مراحل 2 تا 6 نحوه ایجاد یک گواهی SSL خود امضا شده برای Nginx در اوبونتو 18.04 از آن استفاده کنید.
⦁ Nginx به گونه ای پیکربندی شود تا ترافیک را از پورت 80 به پورت 443 هدایت کند ، که باید با پیش نیازهای قبلی پوشش داده شود.
⦁ Nginx به گونه ای پیکربندی شود تا از یک کلید 2040 بیتی یا بالاتر Ephemeral Diffie-Hellman (DHE) استفاده کند ، که باید با پیش نیازهای قبلی نیز پوشش داده شود.
مرحله 1 – فعال کردن پشتیبانی HTTP / 2
اگر مرحله نصب بلوک سرور مجازی را در آموزش نصب Nginx دنبال کردید ، باید یک سرور مجازی برای دامنه خود در / etc / nginx / sites-available / your_domain خود با server_namedirective که قبلاً به طور مناسب تنظیم شده است ، داشته باشید. اولین تغییری که ما ایجاد خواهیم کرد اصلاح بلوک سرور مجازی دامنه شما برای استفاده از HTTP / 2 خواهد بود.
فایل پیکربندی را برای دامنه خود باز کنید:
$ sudo nano /etc/nginx/sites-available/your_domain

در این فایل ، متغیرهای listen مربوط به پورت 443 را بیابید:
your_domain’>/etc/nginx/sites-available/your_domain

listen [::]:443 ssl ipv6only=on;
listen 443 ssl;

مورد اول مربوط به اتصالات IPv6 است. مورد دوم برای کلیه اتصالات IPv4 است. ما HTTP / 2 را برای هر دو فعال خواهیم کرد.
هر یک از دستورالعمل های listen را تغییر دهید تا http2 را شامل شود:
your_domain’>/etc/nginx/sites-available/your_domain

listen [::]:443 ssl http2 ipv6only=on;
listen 443 ssl http2;

این به Nginx می گوید که از HTTP / 2 با مرورگرهای پشتیبانی شده استفاده کند.
فایل پیکربندی را ذخیره کرده و ویرایشگر متن را ویرایش کنید.
هر زمان که در فایل های پیکربندی Nginx تغییراتی ایجاد کنید ، باید پیکربندی خطاهای نحوی را مانند این موارد بررسی کنید:
$ sudo nginx –t

اگر نحو بدون خطا باشد ، خروجی زیر را مشاهده خواهید کرد:
Output of sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

در مرحله بعد ، ما سرور مجازی خود را پیکربندی خواهیم کرد تا از لیست محدودتر رمزها استفاده شود.
مرحله 2 – حذف سوئیت های رمزگذاری شده قدیمی و ناایمن
HTTP / 2 دارای لیست سیاه رمزهای قدیمی و ناامن است ، بنابراین باید از آنها اجتناب کنیم. مجموعه های cipher مجموعه های رمزنگاری هستند که نحوه رمزگذاری داده های انتقال یافته را توصیف می کنند.
روشی که برای تعریف cipher استفاده خواهید کرد بستگی به نحوه پیکربندی گواهینامه های TLS / SSL شما برای Nginx دارد.
اگر برای به دست آوردن گواهینامه های خود از Certbot استفاده کرده اید ، فایل /etc/letsencrypt/options-ssl-nginx.conf را نیز ایجاد کرده است که حاوی cipher هایی است که برای HTTP / 2 به اندازه کافی قوی نیستند. اصلاح این فایل متأسفانه مانع از اعمال به روزرسانی Certbot در آینده خواهد شد ، بنابراین ما فقط به Nginx میگوییم که از این فایل استفاده نکند و ما لیست رمزهای خود را مشخص خواهیم کرد.
فایل پیکربندی بلوک سرور مجازی را برای دامنه خود باز کنید:
$ sudo nano /etc/nginx/sites-available/your_domain

خطی را که شامل فایل های گزینه options-ssl-nginx.conf است پیدا کنید و آن را حذف کنید:
your_domain’>/etc/nginx/sites-available/your_domain

# include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot<^>

در زیر آن خط ، این خط را برای تعریف رمز مجاز اضافه کنید:
your_domain’>/etc/nginx/sites-available/your_domain

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

فایل را ذخیره کرده و از ویرایشگر خارج شوید.
اگر از گواهینامه های خود امضا شده یا از یک گواهی از سوی شخص ثالث استفاده کرده اید و مطابق پیش نیازها آن را پیکربندی کرده اید ، فایل /etc/nginx/snippets/ssl-params.conf را در ویرایشگر متن خود باز کنید:
$ sudo nano /etc/nginx/snippets/ssl-params.conf

خط زیر را پیدا کنید:
/etc/nginx/snippets/ssl-params.conf

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;

آن را به این صورت اصلاح کنید:
/etc/nginx/snippets/ssl-params.conf


ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3

فایل را ذخیره کنید و از ویرایشگر خود خارج شوید.
یک بار دیگر ، پیکربندی خطاهای نحوی را بررسی کنید:
$ sudo nginx -t

اگر خطایی دیدید ، آن ها را هدف قرار داده و دوباره تست کنید.
هنگامی که خطایی ندیدید ، Nginx را ریستارت کنید:
$ sudo systemctl reload nginx

با راه اندازی مجدد سرور مجازی ، تأیید کنید که به خوبی کار می کند.
مرحله 3 – تأیید فعال بودن HTTP / 2
بیایید اطمینان حاصل کنیم که سرور مجازی با HTTP / 2 کار می کند.
از دستور curl برای ایجاد درخواست به سایت خود و مشاهده هدر ها استفاده کنید:
$ curl -I -L https://your_domain

خروجی زیر را مشاهده خواهید کرد:
Output
HTTP/1.1 301 Moved Permanently
Server: nginx/1.14.0 (Ubuntu)
Date: Fri, 06 Jul 2018 19:07:12 GMT
Content-Type: text/html
Content-Length: 194
Connection: keep-alive
Location: https://your_domain/

HTTP/2 200
server: nginx/1.14.0 (Ubuntu)
date: Fri, 06 Jul 2018 19:07:12 GMT
content-type: text/html
content-length: 16
last-modified: Fri, 06 Jul 2018 16:55:37 GMT
etag: “5b3f9f09-10”
accept-ranges: bytes

همچنین می توانید تأیید کنید که HTTP / 2 در گوگل کروم در حال استفاده است. کروم را باز کرده و به http: // your_domain بروید. ابزارهای برنامه نویسی کروم را باز کنید (View -> Developer -> Developer Tools) و مجدد صفحه را لود کنید (View -> Reload This Page). به سربرگ Network بروید ، بر روی ردیف header جدول که با Name شروع می شود ، کلیک راست کنید و از منوی بازشده گزینه پروتکل را انتخاب کنید.
h2 (مخفف HTTP / 2) را در یک ستون پروتکل جدید مشاهده خواهید کرد که نشان می دهد HTTP / 2 در حال کار است.

در این مرحله ، شما آماده ارائه مطالب از طریق پروتکل HTTP / 2 هستید. بیایید با فعال کردن HSTS ، امنیت و عملکرد را بهبود ببخشیم.
مرحله 4 – فعال کردن امنیت سختگیرانه انتقال HTTP (HSTS)
حتی اگر درخواستهای HTTP شما به HTTPS تغییر مسیر دهند ، می توانید HTTP Strict Transport Security (HSTS) را فعال کنید تا از انجام این تغییر مسیرها جلوگیری شود. اگر مرورگر یک هدرHSTS پیدا کند ، دیگر سعی نخواهد کرد تا برای یک بازه زمانی معین ، دوباره از طریق HTTP معمولی به سرور مجازی متصل شود. صرفنظر از نوع داده ، آن را فقط با اتصال HTTPS رمزگذاری شده داده تبادل می کند. این هدر همچنین از ما در برابر حملات تخریب پروتکل محافظت می کند.
فایل پیکربندی Nginx را در ویرایشگر خود باز کنید:
$ sudo nano /etc/nginx/nginx.conf

برای فعال کردن HSTS ، این خط را به فایل اضافه کنید:
/etc/nginx/nginx.conf
http {

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
add_header Strict-Transport-Security “max-age=15768000” always;
}

max-age در ثانیه تنظیم می شود. مقدار 15768000 معادل 6 ماه است.
به طور پیش فرض ، این هدر به زیردامنه ها اضافه نمی شود. اگر زیر دامنه دارید و می خواهید HSTS روی همه آنها اعمال شود ، باید متغیر includeSubDomains را در انتهای خط اضافه کنید ، مانند این:
/etc/nginx/nginx.conf
add_header Strict-Transport-Security “max-age=15768000; includeSubDomains” always;

فایل را ذخیره کنید و از ویرایشگر خارج شوید.
یک بار دیگر ، پیکربندی خطاهای نحوی را بررسی کنید:
$ sudo nginx -t

سرانجام ، سرور مجازی Nginx را دوباره راه اندازی کنید تا تغییرات اعمال شود.
$ sudo systemctl reload nginx

نتیجه
سرور مجازی Nginx شما اکنون در خدمت صفحات HTTP / 2 است. اگر می خواهید استحکام اتصال SSL خود را آزمایش کنید ، لطفا به SSL Qualys LAB مراجعه کرده و تست را برای سرور مجازی خود اجرا کنید. اگر همه چیز به درستی تنظیم شده است ، باید یک علامت A + برای امنیت دریافت کنید.

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

چگونه با FreeBSD شروع کنیم

نحوه نصب Prosody روی اوبونتو 18.04

نحوه نصب و استفاده از Docker در اوبونتو 20.04

نحوه راه اندازی Nginx با پشتیبانی HTTP / 2 در اوبونتو 18.04

چگونه می توان پلتفرم Cloud IDE کد سرور را روی Debian 10 تنظیم كرد

نحوه دسترسی از راه دور به برنامه های GUI با استفاده از Docker و Caddy در Debian 10

چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7 تنظیم كرد

نحوه دسترسی از راه دور به برنامه های GUI با استفاده از Docker و Caddy در اوبونتو 20.04

نحوه دسترسی از راه دور به برنامه های GUI با استفاده از Docker و Caddy در Debian 9

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکاخرید سرور مجازی ارزان هلندvpsخرید vps هلندخرید سرور مجازی آمریکاخرید vps فرانسهتست vpsسرور مجازی تستسرور مجازی ویندوزارزانترین vpsخرید وی پی اسvps ارزان – 


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/