اطلاعیه

بستن
No announcement yet.

راه اندازی Virtual Hosting بر پایه Name و بر پایه IP در وب سرور Nginx

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    راه اندازی Virtual Hosting بر پایه Name و بر پایه IP در وب سرور Nginx

    در مدت زمان کوتاهی که NGINX توسعه داده شد و در اختیار همگان قرار گرفت (کمی بیش از 10 سال)، به خاطر کارایی بالا (performance) و مصرف پایین حافظه (low memory usage)، رشد ثابت و محفوظی در بین وب سرورها داشته است.

    از آنجایی که Nginx یک نرم افزار رایگان و Opensource می باشد، از طرف هزاران نفر از مدیران Web Server ها (نه تنها در سرور های Linux و Unix بلکه در سرورهای Microsoft Windows) در اقصی نقاط جهان مورد قبول واقع شده است.

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

    در این مقاله به نحوه استفاده از Nginx برای راه اندازی سرورهای مجازی بر اساس نام و بر اساس IP در سرورهای CentOS/RHEL 7 و Debian 8 و مشتقات آنها می پردازیم و با Ubuntu 15.04 و Spin-off های آن شروع می کنیم.

    سناریوی آزمایشی ما برای مقاله فوق به صورت زیر است :
    1. سیستم عامل: Debian 8 Jessie Server [IP 192.168.0.25]
    2. درگاه: Router [ 192.168.0.1]
    3. وب سرور: Nginx 1.6.2-5
    4. دامنه های فرضی :
    کد PHP:
    http://www.tecmintlovesnginx.com/
    و
    http
    ://www.nginxmeanspower.com/ 


    نصب Nginx Web Server

    اگر هنوز Nginx را نصب ندارید لطفآ آن را نصب کنید. اگر فکر می کنید برای راه اندازی آن نیاز به کمک دارید با یک جستجوی ساده Nginx در همین وب سایت چندین مقاله در مورد آن خواهید یافت. بر روی علامت ذره بین در بالای همین صفحه کلیک کنید و کلمه کلیدی Nginx را جستجو کنید. و اگر نمی دانید چگونه آن را پیدا کنید اصلا نگران نباشید، لینک های مرتبط با Nginx را در اینجا برای شما گذاشته ام، فقط دقت کنید که مطابق با سیستم عاملی که دارید لینک را انتخاب کنید و سپس اقدام به نصب Nginx نمایید.
    1. آموزش نصب و کامپایل Nginx 1.6.0 از سورس در RHEL/CentOS 7.0
    2. آموزش نصب Nginx در لینوکس دبیان 9
    3. http://linux-zone.org/forums/thread2594.html
    4. آموزش نصب Nginx در RedHat/CentOS 7.0
    5. پسورد گذاشتن روی (فولدر، پوشه، دایرکتوری) در وب سرور انجین ایکس


    پس از نصب Nginx دوباره می توانید به ادامه این مقاله آموزشی بپردازید.


    ساخت virtual hosting بر اساس Name در Nginx :

    همان طور که خودتان می دانید، یک virtual hosting در واقع وب سایتی است که توسط Nginx در VPS تک ابری یا سرور فیزیکی سرویس دهی می شود. با وجود اینکه در اسناد و متون مربوط به Nginx با عبارت “Server Blocks” به جای آنها مواجه می شویم ولی اینها در واقع بیانگر یک مفهوم هستند.(با اسامی متفاوت)

    اولین گام برای راه اندازی virtual hosting ایجاد یک یا چند Block Server در فایل Configuration اصلی به آدرس (/etc/nginx/nginx.conf) و یا (/etc/nginx/sites-available) است ( در اینجا از 2 تا Server Block استفاده می کنیم، هر کدام برای یکی از دامنه های فرضی که داریم)

    با وجود این که شما می توانید نام فایل پیکربندی را در این دایرکتوری (Site-available) هر چه می خواهید بنامید ولی بهتر است نام دامنه را برای آن برگزینید و پسوند .conf را به انتهای نام این فایل اضافه کنید.

    Server Block ها می توانند بسیار پیچیده باشند ولی در مدل های اولیه خود شامل متن زیر می باشند :

    در مسیر /etc/nginx/site-available/tecmintlovesnginx.com.conf :
    کد PHP:
    server {  
        
    listen       80;  
        
    server_name  tecmintlovesnginx.com www.tecmintlovesnginx.com;
        
    access_log  /var/www/logs/tecmintlovesnginx.access.log;  
        
    error_log  /var/www/logs/tecmintlovesnginx.error.log error;
            
    root   /var/www/tecmintlovesnginx.com/public_html;  
            
    index  index.html index.htm;  

    و در /etc/nginx/sites-available/nginxmeanspower.com.conf :
    کد PHP:
    server {  
        
    listen       80;  
        
    server_name  nginxmeanspower.com www.nginxmeanspower.com;
        
    access_log  /var/www/logs/nginxmeanspower.access.log;  
        
    error_log  /var/www/logs/nginxmeanspower.error.log error;
        
    root   /var/www/nginxmeanspower.com/public_html;  
        
    index  index.html index.htm;  

    شما می توانید از بلاکهای بالا استفاده کنید تا شروع به راه اندازی virtual hosting خود کنید و یا می توانید فایل هایی با ساختاری اولیه از /etc/nginx/sites-vailable/default (در دبیان) و یا etc/nginx.conf.default (در CentOS) ایجاد کنید.

    پس از کپی کردن، سطح مالکیت و سطح اجازه به فایل را تغییر دهید :
    کد:
    # chmod 660  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
    # chmod 660  /etc/nginx/sites-available/nginxmeanspower.com.conf
    Debian و مشتقات
    کد:
    # chgrp www-data  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
    # chgrp www-data  /etc/nginx/sites-available/nginxmeanspower.com.conf
    CentOS و RHEL
    کد:
    # chgrp nginx  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
    # chgrp nginx  /etc/nginx/sites-available/nginxmeanspower.com.conf
    وقتی این کار به اتمام رسید شما باید برای جلوگیری از تضاد و درهم و برهمی فایل نمونه را پاک کنید یا نام آن را تغییر دهید.

    لطفآ توجه داشته باشید که علاوه بر موارد فوق باید دایرکتوری برای لاگ ها (/var/www/logs) ایجاد کنید و به کاربران Nginx (انجینکس) (nginx یا www-data، بسته به این که Nginx را در CentOS یا Debian راه اندازی کرده اید) دسترسی خواندن و نوشتن دهید :
    کد:
    # mkdir /var/www/logs
    # chmod -R 660 /var/www/logs
    # chgrp <nginx user> /var/www/logs
    حال باید با ایجاد symlink به فایل فوق در دایرکتوری sites-enabled میزبان مجازی (virtual hosting) فعال شود :
    کد:
    # ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf
    # ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf
    سپس یک فایل html با نام index.html برای هر virtual hosting در داخل /var/www/<domain name>/public_html ایجاد کنید (<domain name> را به نام دامنه مورد نظر تغییر دهید). کد زیر را در صورت لزوم تغییر دهید :
    کد:
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Tecmint loves Nginx</title>
      </head>
      <body>
      <h1>Tecmint loves Nginx!</h1>
      </body>
    </html>
    در انتها Nginx Configuration را تست کنید و وب سرور را Start کنید و در صورت وقوع هر گونه خطا آن را رفع کنید :
    کد:
     # nginx -t && systemctl start nginx
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	Check-Nginx-Configuration.png نمایش ها:	1 اندازه:	13.5 KB شناسه:	20352


    و در سیستم لوکال خود خط های زیر را در فایل /etc/hosts اضافه کنید که در حقیقت روش اصلی برای resolve کردن نام می باشد.(تبدیل ip به name) :
    کد:
    192.168.0.25 tecmintlovesnginx.com
    192.168.0.25 nginxmeanspower.com
    سپس یک صفحه وب باز کنید و به URL هایی که در بالا لیست شده اند بروید :

    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	Check-Nginx-Name-Based-Virtual-Hosts.png نمایش ها:	1 اندازه:	8.8 KB شناسه:	20353


    برای اضافه کردن به virtual hosting در Nginx، هر چند بار که می خواهید مراحلی که تا اینجا توضیخ داده شد را اجرا کنید.



    virtual hosting بر پایه IP در Nginx :

    بر خلاف virtual hosting بر پایه نام که همه میزبان ها توسط یک آدرس IP در دسترس هستند، virtual hosting بر پایه IP هر بار نیازمند یک ترکیب IP:Port متفاوت هستند.

    با استفاده از آن، یک وب سرور به هنگام دریافت request، سایت های متفاوتی را با توجه به ip address و port در جواب برمیگرداند.
    از آنجاییکه در متد virtual hosting بر اساس نام، ما مزیت و امکان به اشتراک گذاری یک ip address و port را داریم، باعث میشود که آنها برا وب سرورهای همه منظوره مناسب و استاندارد باشند و قطعا این متد انتخاب خواهد شد مگر اینکه ورژن Nginx شما Server Name Identification یا SNI را ساپورت نکند و دلیل آن نیز می تواند منسوخ بودن ورژن آن باشد و یا ممکن است بدون گزینهُ with-http-ssl-module کامپایل شده باشد.


    اگر
    کد:
    # nginx -V
    خط مارک شده در تصویر زیر را نمایش ندهد شما باید Nginx خود را به روز رسانی کنید و یا آن را دوباره کامپایل نمایید.

    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	Check-Nginx-Version-and-Modules.png نمایش ها:	1 اندازه:	13.5 KB شناسه:	20354


    با فرض این که تا کنون همه چیز خوب پیش رفته است، باید به این نکته توجه کنیم که یک پیش نیاز دیگر برای virtual hosting بر پایه IP، در دسترس بودن IP های جداگانه می باشد. چه با تخصیص آنها به اینترفیس های شبکه های مجزا و یا از طریق استفاده از IP های مجازی (که با عنوان IP aliasing نیز شناخته می شود).

    برای اجرای IP aliasing در Debian (با فرض اینکه شما از eth0 استفاده می کنید) /etc/network/interfaces را به صورت زیر اصلاح کنید :

    Debian and Derivatives
    کد:
    auto eth0:1
    iface eth0:1 inet static
            address 192.168.0.25
            netmask 255.255.255.0
            network 192.168.0.0
            broadcast 192.168.0.255
            gateway 192.168.0.1
    auto eth0:2
    iface eth0:2 inet static
            address 192.168.0.26
            netmask 255.255.255.0
            network 192.168.0.0
            broadcast 192.168.0.255
    gateway 192.168.0.1
    در مثال بالا ما 2 عدد NIC مجازی از بین eth0: eth0:1(192.168.0.25) و eth0:2(192.168.0.26) ایجاد کردیم.


    CentOS و RHEL

    در CentOS (سنت او اس)، /etc/sysconfig/network-scripts/ifcfg-enp0s3 را به ifcfg-enp0s3:1 تغییر دهید و یک کپی از آن با نام ifcfg-enp0s3:2 بگیرید، و سپس به ترتیب تغییرات زیر را اعمال نمایید :
    کد:
    DEVICE="enp0s3:1"
    IPADDR=192.168.0.25
    و
    کد:
    DEVICE="enp0s3:2"
    IPADDR=192.168.0.26
    وقتی تغییرات فوق اعمال شد سرویس شبکه را restart کنید :
    کد:
     # systemctl restart networking
    سپس تغییرات فوق را در سرور های بلاک که پیش تر در این مقاله در مورد آنها توضیح دادم اعمال نمایید.

    در مسیر /etc/nginx/sites-available/tecmintlovesnginx.com.conf
    کد:
     listen 192.168.0.25:80
    در مسیر /etc/nginx/sites-available/nginxmeanspower.com.conf
    کد:
     listen 192.168.0.26:80
    سرانجام، برای اینکه تغییرات فوق اعمال شود Nginx را Restart کنید :
    کد:
     # systemctl restart nginx
    و فراموش نکنید که به صورت زیر /etc/hosts *لوکال خود را به روز رسانی کنید :
    کد:
    192.168.0.25 tecmintlovesnginx.com
    192.168.0.26 nginxmeanspower.com
    بدین ترتیب، هر درخواستی که با 192.168.0.25 و 192.168.0.26 در پورت 80 ساخته می شود به ترتیب tecmintlovesnginx.com و nginxmeanspower.com را در جواب باز خواهد گرداند.

    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	Check-Nginx-Name-Based-Virtual-Hosts.png نمایش ها:	1 اندازه:	8.8 KB شناسه:	20353


    همانطور که در تصویر بالا می بینید، اکنون 2 تا virtual hosting بر پایه IP داریم که تنها از یک NIC ولی با دو IP alias متفاوت در سرور شما استفاده می کنند.

    خلاصه
    در این مقاله آموزشی توضیح دادم که چطور virtual hosting بر پایه نام و بر پایه IP در Nginx را راه اندازی کنیم. اگرچه احتمالآ می خواهید ازگزینه اول استفاده کنید، خوب است که این را بدانید که گزینه دیگر هم اگر به آن نیاز داشتید موجود است - البته پیشنهاد می شود این تصمیم را بعد از بررسی واقعیات بیان شده در این مقاله اخذ کنید.

    بعلاوه، بهتر است آموزش های مربوط به Nginx را که بسیار ارزشمند هستند و در هنگام ایجاد و تنظیم سرورهای بلاک مراجع خوبی می باشند مطالعه کنید که لینک آنها در این مقاله گذاشته شده. شمار منابع وسیع و در دسترس برای تنظیم و راه اندازی این وب سرور غیر قابل باور است.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-13-2020, 11:49 PM.

درباره انجمن منطقه لینوکسی ها

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

شبکه های اجتماعی

ایمیل مدیریت

Habili@linux-zone.org

در حال انجام ...
X