مقدمه
- یکی از موارد مصرف نرمافزار Nginx استفاده از آن به عنوان Web Server میباشد اما این نرمافزار امکانات بیشتری نظیر Reverse Proxy به منظور ارائهی سیستم Cache ، تولید گواهیهای https ، پیادهسازی مکانیزم دفاعی WAF ، ایجاد Load Balance و … در اختیار مخاطبان این نرم افزار قرار میدهد.

مقدمهای بر پروژهی desertco-nginx
- پروژهی desertco-nginx به منظور راهاندازی نرمافزار Nginx تحت بستر Docker به عنوان نوعی Reverse Proxy فراهم شده است.
- مکانیرم کاری Reverse Proxy بدین صورت است که در جلوی نرمافزار Backend قرار گرفته و خدماتی نظیر Cache ، تولید گواهیهای https ، پیادهسازی مکانیزم دفاعی WAF ، ایجاد Load Balance و … را ارائه میدهد.
- لازم به ذکر است که کاربرد این پروژه تنها برای استفاده در جلوی وبسایتها به منظور ارائهی خدمات ذکر شده، میباشد.
- به عنوان نمونه پروژهی desertco-nginx در جلوی سیستم WordPress این سامانه (kb.homayouni.info) قرار گرفته است.
دریافت پروژهی desertco-nginx
- به منظور دریافت پروژه از ابزار git به صورت زیر استفاده نمایید.
# cd /opt/
# git clone http://git.homayouni.info/git/iman/desertco-nginx.git -b release
- در ادامه وارد پوشهی desertco-nginx شوید.
# cd desertco-nginx
نصب و راهاندازی پروژه desertco-nginx
- به منظور دریافت پروندههای Image مربوط به این پروژه وارد پوشهی images شوید.
# cd /opt/desertco-nginx/images/
- جهت دریافت پروندههای Image یک اسکریپت به زبان Bash تهیه شده است. آن را به صورت زیر اجرا نمایید.
# bash setup.sh
- در صورتی که فرآیند بارگزاری پروندهی Image با موفقیت تمام شود، با تصویری مشابه زیر روبهرو خواهید شد.

پیکربندی پروژه desertco-nginx
# cd /opt/desertco-nginx/nginx/
- به منظور ساخت گواهی SSL وارد پوشهی certs شوید.
# cd certs/
- جهت ساخت گواهی SSL یک اسکریپت به زبان Bash تهیه شده است که گواهیهای مورد نیاز را تهیه میکند.
- برای استفاده از این اسکریپت به صورت زیر عمل نمایید.
# bash create_new.sh
- با اجرای این اسکریپت سوالاتی به منظور تهیهی گواهی SSL پرسیده میشود. آنها را با دقت جواب دهید.
- به عنوان نمونه به تصویر زیر توجه نمایید.

- به منظور اعمال تنظیمات پیشرفته وارد پوشهی conf.d شوید.
# cd /opt/desertco-nginx/nginx/
# cd conf.d/
- پروندهی default.conf حاوی تنظیمات پیشفرض پروژهی desertco-nginx میباشد.
- پروندهی nginx.conf حاوی تنظیمات اختصاصی میباشد. پیشنهاد میشود اسم این پرونده را برابر با نام پروژهی اصلیای که قصد استفاده از آن را دارید قرار دهید.
- به عنوان مثال میتوان اسم پروندهی nginx.conf را با gitbucket.conf تغییر داد.
- در ادامه پروندهی nginx.conf را با یک ویرایشگر باز نمایید.
# vim nginx.conf
- در خط سوم در مقابل عبارت server_name اشاره با نام دامنهی مورد استفاده برای پروژه شده است.
- مقدار پیشفرض این مقدار برابر با nginx.homayouni.info است که باید متناسب با سناریوی موجود تغییر یابد.
- همچنین همین روند باید برای خط نهم طی شود.
...
server_name nginx.homayouni.info;
...
- در خط بیستم اشاره به نرمافزار یا ابزاری شده است که اصطلاحا قرار است در Background به اجرا گذاشته شود.
- به عنوان مثال با نصب و راهاندازی پروژهی desertco-gitbucket ، سامانهی GitBucket تحت پروتکل TCP بر روی پورت 8080 واقع در Localhost شروع به سرویسدهی میکند.
- در این سناریو نیاز است که مقدار خط بیستم یعنی proxy_pass برابر با آدرسی که سامانهی GitBucket سرویسدهی میکند قرار گیرد.
...
proxy_pass http://localhost:8080;
...
- نمایی از پروندهی nginx.conf در حالت پیشفرض به صورت زیر است.

تصاویر پروژهی desertco-gitbucket


- این مستند تحت شرایط سیستمعامل Ubuntu 20.04 – Focal در سمت Server بررسی شده است.