Skip to Content

بلاگ

وب سرور NGINX و ترکیب آن با وب سرور Apache

وب سرور NGINX و ترکیب آن با وب سرور Apache

 

وب سرور

وب سرور Nginx با وجود حجم کم اما در عین حال کارایی بسیار بالایی دارد. وب سرور Nginx تحت لایسنس BSD و از سال 2007 در سطح وب به صورت گسترده منتشر شده است.از بزرگترین مزیتهای وب سرور Nginx پشتیبانی بسیار عالی از فایل های استاتیک مانند تصاویر هست.

 

وب سرور Ngnix در یک نگاه

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

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

در وب سرور Nginx برای هر درخواست یک Thread انحصاری ایجاد خواد شد. ضمنا سیستم Thread Poll هم به مدیریت و نوبت دهی زمانی Thread ها می پردازد. به این ترتیب مادامی که درخواست جدیدی نیامده است وب سرور درخواست های در نوبت را ارائه می کند. این روش استفاده از Thread ها در وب سرور Nginx بسیار کارامد است. به طور کلی مدیریت باز و بسته شدن Thread ها در وب سرور هایی مثل Apache بزرگترین نقطه ضعف آنها می باشد. ترتیبی عمل کردن در این وب سرور ها باعث می گردد زمان زیادی از دست برود در حالی که سرور امکان پردازش در اون زمان را داشته است اما منتظر رسیدن درخواست بعدی مانده است.

آپدیت ها و به روز رسانی وب سرورها همواره با مشکلاتی همراه است که در خروجی چیزی جز داون تایم برای سرورها و نارضایتی مشتریان را به دنبال ندارد، اما در مورد وب سرور Ngnix به روز رسانی به نسخه جدید تر به صورت On The Fly می باشد و این مورد در پروژه هایی که نباید سایت داون تایم داشته باشد بسیار ارزشمند است.

وب سرور NGINX

تفاوت های Apache با Ngnix

در یک تفسیر ساده Apache یک وب سرور Process-Based در حالی که Nginx یک وب سرور Event-Based بهمین دلیل Nginx سریعتر از Apache است. روشن است به این ترتیب به ازای درخواست های HTTP مشابه وب سرور Ngnix حافظه رم کمتری مصرف می کند، از طرفی دیگر Apache نظر به عمر طولانی تر دارای امکانات و قابلیت های بیشتری نسبت به Nginx می باشد. یکی از امتیازات برتری Apache به وب سرور Ngnix همان مدیریت دسترسی به کمک فایل htaccess می باشد که شامل انواع Mod ها جهت Redirect، Rwrite، cache و … می باشد.

وب سرور Ngnix در قیاس با LightSpeed

بر خلاف ادعا شرکت LiteSpeed که وب سرور آن تا 40 برابر سریعتر از Apache و حداقل 20 برابر سریعتر از Ngnix است، تجربه ثابت کرده است با وجود 6 سال سابقه بیشتر به نسبت Ngnix اما هنوز LightSpeed موفق نشده است به جایگاه Ngnix دست پیدا کند و از نظر ظرفیت هر چند شاید در تست ها سریعتر باشد اما در زیر فشار بازدید بالا به هیچ وجه پایداری Ngnix را نداشته و خیلی زود شاهد کاهش توان آن هستیم. مهاجرین LightSpeed به وب سرور Ngnix آنقدر بزرگ و زیاد هستند که خود گویای همه چیز می باشد، ویکی پدیا، فیسبوک به عنوان نمونه ای از وب سایت هایی هستند که همواره جزو 10 سایت پر ترافیک جهان می باشند، و به وب سرور Ngnix اعتماد کرده اند.

ترکیب Ngnix با Apache

بی تردید بسیاری از اسکریپت ها و وب سایت ها، جز با Apache کمی در اجرا با مشکل روبرو هستند، بسیاری از وبمسترها قابلیت هایی که به کمک htaccess نصیبشان می شود را به کمی سریعتر لود شدن تصایر سایتشان می پسندند. از این رو کنار گذاشتن وب سرور Apache در هاست های اشتراکی کاری نادرست می باشد که موجبات نارضایتی و محدودیت در سرویس دهی می شود.

از این رو در طرحی ابتکاری، وب سرور Ngnix نه به جای Apache که در کنار آن می تواند ضمن به همراه آوردن کلیه محاسنش برای هاست های اشتراکی، کلیه قابلیت های Apache را همچنان در اختیار کاربران قرار دهد. این قابلیت در چندین شکل امکان پذیر است که بسته به نیاز میتوان الویت ها را برای وب سرورهای مختلف تعریف داشت، البته تنظیمات نادرست در این حوزه میتواند کاملا بر عکس عمل کرده و سرور را نه تنها کند که در پاره ای موارد دچار مشکل نیز نماید.

کدباکس، در هاست اشتراکی خود از وب سرور Ngnix به عنوان قدرتمندترین وب سرور حاضر، در کنار Apache به عنوان محبوب ترین وب سرور جهان بهره می برد. طبق آزمون ها پس از کانفیگ کامل این ترکیب بر روی هاست اشتراکی ما شاهد حدود 300% افزایش سرعت پاسخدهی سرور به درخواست های همزمان بوده ایم و این یعنی ظرفیت 3 برابری پاسخدهی. در عین حال استفاده کامل از Ngnix برای هندل داده های استاتیک و کش شده سرور نیز با تنظیمات خاص اعمال شد که در نتیجه موجب کاهش 60% منابع مصرفی سرور شده است که روشن است منابع آزاد سرور در رزرو پردازش های سنگین تر می باشد.

در یک نگاه

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

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

در وب سرور Nginx برای هر درخواست یک Thread انحصاری ایجاد خواد شد. ضمنا سیستم Thread Poll هم به مدیریت و نوبت دهی زمانی Thread ها می پردازد. به این ترتیب مادامی که درخواست جدیدی نیامده است وب سرور درخواست های در نوبت را ارائه می کند. این روش استفاده از Thread ها در وب سرور Nginx بسیار کارامد است. به طور کلی مدیریت باز و بسته شدن Thread ها در وب سرور هایی مثل Apache بزرگترین نقطه ضعف آنها می باشد. ترتیبی عمل کردن در این وب سرور ها باعث می گردد زمان زیادی از دست برود در حالی که سرور امکان پردازش در اون زمان را داشته است اما منتظر رسیدن درخواست بعدی مانده است.

آپدیت ها و به روز رسانی وب سرورها همواره با مشکلاتی همراه است که در خروجی چیزی جز داون تایم برای سرورها و نارضایتی مشتریان را به دنبال ندارد، اما در مورد وب سرور Ngnix به روز رسانی به نسخه جدید تر به صورت On The Fly می باشد و این مورد در پروژه هایی که نباید سایت داون تایم داشته باشد بسیار ارزشمند است.

وب سرور NGINX

تفاوت های Apache با Ngnix

در یک تفسیر ساده Apache یک وب سرور Process-Based در حالی که Nginx یک وب سرور Event-Based بهمین دلیل Nginx سریعتر از Apache است. روشن است به این ترتیب به ازای درخواست های HTTP مشابه وب سرور Ngnix حافظه رم کمتری مصرف می کند، از طرفی دیگر Apache نظر به عمر طولانی تر دارای امکانات و قابلیت های بیشتری نسبت به Nginx می باشد. یکی از امتیازات برتری Apache به وب سرور Ngnix همان مدیریت دسترسی به کمک فایل htaccess می باشد که شامل انواع Mod ها جهت Redirect، Rwrite، cache و … می باشد.

وب سرور Ngnix در قیاس با LightSpeed

بر خلاف ادعا شرکت LiteSpeed که وب سرور آن تا 40 برابر سریعتر از Apache و حداقل 20 برابر سریعتر از Ngnix است، تجربه ثابت کرده است با وجود 6 سال سابقه بیشتر به نسبت Ngnix اما هنوز LightSpeed موفق نشده است به جایگاه Ngnix دست پیدا کند و از نظر ظرفیت هر چند شاید در تست ها سریعتر باشد اما در زیر فشار بازدید بالا به هیچ وجه پایداری Ngnix را نداشته و خیلی زود شاهد کاهش توان آن هستیم. مهاجرین LightSpeed به وب سرور Ngnix آنقدر بزرگ و زیاد هستند که خود گویای همه چیز می باشد، ویکی پدیا، فیسبوک به عنوان نمونه ای از وب سایت هایی هستند که همواره جزو 10 سایت پر ترافیک جهان می باشند، و به وب سرور Ngnix اعتماد کرده اند.

ترکیب Ngnix با Apache

بی تردید بسیاری از اسکریپت ها و وب سایت ها، جز با Apache کمی در اجرا با مشکل روبرو هستند، بسیاری از وبمسترها قابلیت هایی که به کمک htaccess نصیبشان می شود را به کمی سریعتر لود شدن تصایر سایتشان می پسندند. از این رو کنار گذاشتن وب سرور Apache در هاست های اشتراکی کاری نادرست می باشد که موجبات نارضایتی و محدودیت در سرویس دهی می شود.

از این رو در طرحی ابتکاری، وب سرور Ngnix نه به جای Apache که در کنار آن می تواند ضمن به همراه آوردن کلیه محاسنش برای هاست های اشتراکی، کلیه قابلیت های Apache را همچنان در اختیار کاربران قرار دهد. این قابلیت در چندین شکل امکان پذیر است که بسته به نیاز میتوان الویت ها را برای وب سرورهای مختلف تعریف داشت، البته تنظیمات نادرست در این حوزه میتواند کاملا بر عکس عمل کرده و سرور را نه تنها کند که در پاره ای موارد دچار مشکل نیز نماید.

کدباکس، در هاست اشتراکی خود از وب سرور Ngnix به عنوان قدرتمندترین وب سرور حاضر، در کنار Apache به عنوان محبوب ترین وب سرور جهان بهره می برد. طبق آزمون ها پس از کانفیگ کامل این ترکیب بر روی هاست اشتراکی ما شاهد حدود 300% افزایش سرعت پاسخدهی سرور به درخواست های همزمان بوده ایم و این یعنی ظرفیت 3 برابری پاسخدهی. در عین حال استفاده کامل از Ngnix برای هندل داده های استاتیک و کش شده سرور نیز با تنظیمات خاص اعمال شد که در نتیجه موجب کاهش 60% منابع مصرفی سرور شده است که روشن است منابع آزاد سرور در رزرو پردازش های سنگین تر می باشد.

ادامه مطلب

وب سرور Nginx چیست؟

وب سرور Nginx چیست؟

 web server چیست؟

به طور کلی هر چیز ( نرم افزاری یا سخت افزاری ) که داده ای را از طریق اینترنت یا شبکه به کاربر منتقل کند web server نامیده می شود.

nginx نامweb server/reverse proxy ی سبکی است که در سال ۲۰۰۲ به علت مشکل تعداد درخواست زیاد در سایت روسی http://www.rambler.ru شکل گرفت و در سال ۲۰۰۴ اولین نسخه رسمی خود را انتشار داد. تا کنون این وب سرور 11.28%. از سهم تمام وب سرور های دنیا را در دست دارد.

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

از نکات مهم این وب سرور این است که بر روی سیستم عامل های windows linux Bsd و osx به راحتی نصب می شود

در این سیستم استفاده از روش  asynchronous event-driven  است که باعث شده که به میزان استفاده ثابت از RAM برسیم.

asynchronous event-driven چیست؟

وب سرور ها به طریق مختلفی اقدام به مدیریت درخواست ها  (connection ) می کنند

  •     برای هر درخواست یک process جدید درست می کنند
  •     برای هر درخواست یک process جدید درست می کنند در حالی که سیستم connection poll هم دارند که تا مدتی process ها را نگه می دارد و در صورتی که در آن زمان درخواست جدیدی بیاید از process های بیکار استفاده می کنند
  •     برای هر درخواست یک thread جدید درست می کنند
  •     برای هر درخواست یک thread جدید درست می کنند در حالی که سیستم thread poll هم دارند که تا مدتی thread ها را نگه می دارد و در صورتی که در آن زمان درخواست جدیدی بیاید از thread های بیکار استفاده می کنند
  •     یک process همه event ها را مدیریت می کند. (قبول درخواست، پاسخ به کاربر، خواندن داده و … )
  •     ترکیبات روش ها

Nginx از روش چهارم استفاده می کند به همراه ساخت process برای مجموعه از event ها … البته مقداری مشخص را در config مشخص می کند. همه این ها برای این است که بیشترین استفاده را از سیستم خود بکنیم.

به طور کلی باز کردن process و thread هزینه بر است و از آن مهمتر مدیریت اینهاست. وب سرورهایی شبیه Apache که  process و thread هستند با درخواست های زیاد به شدت درگیر مدیریت  process و thread می شوند که در نتیجه فشار زیاد تری به سرور می آورند

http://www.devside.net/articles/apache-performance-tuning
The more RAM your system has, the more processes [and threads] Apache can allocate and use; which directly translates into the amount of concurrent requests/clients Apache can serve.

ارتباط مستقیمی بین RAM و درخواست ها در این وب سرور ها وجود دارد که در روش nginx تا جای ممکن از استفاده ی اضافه آن جلوگیری شده است.

توضیح دیگری را دیدم که جالب به نظر می رسید.#

فکر کنید که وب سرور یک پیتزا فروشیست که باید سفارش ها را از طریق تلفن دریافت کند. در روش process و thread فروشگاه کارمند استخدام می کند (process و thread) که هرکدامشان یک خط تلفن دارند و هر کدام سفارش را از طریق تلفن می گیرند و صبر می کنند تا پیتزا حاضر شود تا به مشتری بگویند ( هنوز تلفن قطع نشده) پیتزای شما حاضر است.

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

nginx چه کارهایی بلد است؟

nginx علاوه بر این که یک وب سرور است  reverse proxy و e-mail (IMAP/POP3) proxy هم هست … علاوه بر درخواست های http در خواست های مربوط به IMAP و POP3 هم می تواند از امکانات nginx استفاده کند. در این روش شما می توانید از روش ها loadbalancing و چیزهایی از این قبیل برای ایمیل استفاده کنید. البته شما می توانید حتی کارهای عجیب غریبی مثل authentication mail را هم از طریق nginx انجام دهید.

 

reverse proxy درخواست های بیرونی را به صورت صف شده و جاهای مختلف می فرستد

  •     reverse proxy ها موجودی سرور های شما را مخفی می کنند و همه ی دنیا شما را از دریچه reverse proxy می بینند.
  •     تمام درخواست ها از reverse proxy می گذرد پس جای مناسبی برای firewall ها و … است
  •     reverse proxy درخواست ها به صورت گسترده ای می تواند پخش کند.
  •     reverse proxy فشار را با cache کردن محتوای صفحات ثابت می تواند کم کند
  •     reverse proxy با فشرده سازی محتوای خروجی سرور ها می تواند زمان درخواست ها را کم کرده و پاسخ به درخواست ها را سریع تر کند.
  •     درخواست ها بین سرور reverse proxy و سرور اصلی به سرعت انجام می شود و connection در reverse proxy باز می ماند و سرور اصلی در گیر نمی شود. ( روش SpoonFeeding )

نصب Nginx:

از سایت  http://nginx.org/en/download.html نسخه آخر را دریافت کنید ( که در این مقاله nginx-1.0.6 است)

فایل فشرده شده را باز کنید.

وارد پوشه شوید و از دستور ./configure برای چک کردن نیازمندی ها و ساخت makefile

با دستور make install وب سرور شما نصب می شود. به صورت پیش فرض در آدرس /usr/local/nginx/ قرار می گیرد. برای اجرای وب سرور فایل nginx را اجرا کنید.

/usr/local/nginx/sbin/nginx

حالا port 80 localhost خود را در مروگری چک کنید.

 

وب سرور شما با موفقیت نصب و اجرا شد.

برای تست وب سرور با پایتون نیاز یک منتقل Web Server Gateway Interface احتیاج داریم که درخواست های ما را به پایتون بدهد. ما برای این کار از uwsgi استفاده می کنیم. خوشبختانه از 0.8.40# به صورت پیشفرض تنظیماتش اضافه شده است.

برای شروع باید uwsgi را نصب کنید.

از سایت اصلی دانلود کنید http://projects.unbit.it/downloads/uwsgi-0.9.9.tar.gz بعد از خارج کردن از حالت فشرده آن را compile کنید . دقت کنید که برای اینکه بتوانید این ماژول c  و پایتونی را کامپایل کنید می بایستی python-dev را هم نصب کنید.

من یک پوشه به اسم /srv/www/zconf/ می سازم که در آن ۲ پوشه وجود دارد

 

در پوشه application من برنامه ای که از فریم ورک flask# استفاده کرده است گذاشتم و در پوشه دیگر هم logfile مربوط به uwsgi و access مربوط به nginx را گذاشته ام.

برنامه ما حالت بسیار ساده ای دارد که فقط درخواست را می گیرد و بدون هیچ cache ای محتوا را بر می گرداند.

#!/usr/bin/env python
# -*- encoding: utf-8 -*-  
"""
  app.py
~~~~~~~~~
"""
from flask import Flask
from flask import render_template_string
from werkzeug.contrib.fixers import ProxyFix

app = Flask(__name__)
@app.route('/')
def index():
   return render_template_string('<h1>Hello Zconf</h1>')

app.wsgi_app = ProxyFix(app.wsgi_app)

در فایل تنظیمات مربوط به nginx هم می بایستی بگوییم که از uwsgi بخواند.

فایل تنظیمات Nginx:

#user  nobody;

worker_processes  1;

میزان process ی که nginx می تواند باز کند اینجا مشخص می شود

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

مسیر پیشرفض error ها و نوع error ها در اینجا مشخص می شود

events {

   worker_connections  1024;

}

تعداد events هایی که یک process می تواند مدیریت کند

پس می توان گفت تعداد connection ها ضرب بین این متغیر و تعداد process هاست

http {

   include       mime.types;

مسیری که mime ها را از آن می خواند

 

   default_type  application/octet-stream;

نوع پیشفرض mime ی که استفاده می شود

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

#                  '$status $body_bytes_sent "$http_referer" '

#                  '"$http_user_agent" "$http_x_forwarded_for"';

قالب log

 

   #access_log  logs/access.log  main;

log مربوط به درخواست ها

 

   sendfile        on;

درخواست های مربوط به فایل را قبول کند یا نه

 

   #tcp_nopush     on;

HTTP response header را با یک پکت ارسال م یکند

   #keepalive_timeout  0;

   keepalive_timeout  65;

میزان زمانی که می خواهیم connection باز باشد تا جواب داده شود

   server {

       listen       80;

port پیشفرض

 

       server_name  localhost;

اسم سرور

 

       #charset koi8-r;

charset پیشفرض

#access_log  logs/host.access.log  main;

    location / {

   include uwsgi_params;

در اینجا من می گویم که از فایل uwsgi_params که به صورت پیشفرض در پوشه conf داری تنظیمات خود را بخوان

 

   uwsgi_pass 127.0.0.1:3031;

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

        }

       error_page   500 502 503 504  /50x.html;

       location = /50x.html {

           root   html;

       }

   }

}

همونطور که دیدید من درخواست های مربوط به port ۸۰ را به uwsgi دادم. در این مرحله باید با به uwsgi بگوییم که در پورت مورد نظر اجرا شود

# uwsgi --socket 127.0.0.1:3031 --file application/app.py --callable app --processes 4 --daemonize logs/uwsgi.log

حالا سرور nginx را kill کنید و دوباره startکنید

 

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

بنچمارک nginx

در این مرحله با apache benchmark به تعداد ۱۰۰۰۰۰ درخواست را به سرور می فرستیم که نتیجه کار را ببینیم

linuxweb@linuxweb-PA65-UD3-B3:~$ ab -n 100000 -c 10 -g test_data_1.txt http://zconf/

This is ApacheBench, Version 2.3 <$Revision: 655654 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking zconf (be patient)

Completed 10000 requests

Completed 20000 requests

Completed 30000 requests

Completed 40000 requests

Completed 50000 requests

Completed 60000 requests

Completed 70000 requests

Completed 80000 requests

Completed 90000 requests

Completed 100000 requests

Finished 100000 requests

Server Software:        nginx/1.0.6

Server Hostname:        zconf

Server Port:            80

Document Path:          /

Document Length:        20 bytes

Concurrency Level:      10

Time taken for tests:   19.961 seconds

Complete requests:      100000

Failed requests:        0

Write errors:           0

Total transferred:      17600000 bytes

HTML transferred:       2000000 bytes

Requests per second:    5009.86 [#/sec] (mean)

Time per request:       1.996 [ms] (mean)

Time per request:       0.200 [ms] (mean, across all concurrent requests)

Transfer rate:          861.07 [Kbytes/sec] received

Connection Times (ms)

             min  mean[+/-sd] median   max

Connect:        0    0   0.0      0       0

Processing:     1    2   1.5      2      35

Waiting:        1    2   1.5      2      35

Total:          1    2   1.5      2      35

Percentage of the requests served within a certain time (ms)

 50%      2

 66%      2

 75%      2

 80%      2

 90%      2

 95%      3

 98%      6

 99%     12

100%     35 (longest request)


 

همانطور که دقت می کنید با اینکه Concurrency برابر ۱۰ بود زمان connection زمانی معادل ۰ داشته

از طرفی هم نمودار های دیگری نیز وجود دارد که استفاده از آنها خالی از لطف نیست.

 

در مجموع نصب کردن و کار کردن به این وب سرور کار راحتی است و با رشدی که دارد پیش بینی می کنم در آینده درصد بیشتری از سهم وب سرور ها را به خود اختصاص دهد.

برای خرید هاست لینوکس خود به لینک زیر مراجعه نمایید:

سفارش هاست لینوکس

ادامه مطلب

وب سرور Nginx چیست

وب سرور Nginx چیست

وب سرور Nginx چیست

وب سرور Nginx چیست

web server چیست؟

به طور کلی هر چیز ( نرم افزاری یا سخت افزاری ) که داده ای را از طریق اینترنت یا شبکه به کاربر منتقل کند web server نامیده می شود.

nginx نامweb server/reverse proxy ی سبکی است که در سال ۲۰۰۲ به علت مشکل تعداد درخواست زیاد در سایت روسی http://www.rambler.ru شکل گرفت و در سال ۲۰۰۴ اولین نسخه رسمی خود را انتشار داد. تا کنون این وب سرور 11.28%. از سهم تمام وب سرور های دنیا را در دست دارد.

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

از نکات مهم این وب سرور این است که بر روی سیستم عامل های windows linux Bsd و osx به راحتی نصب می شود

در این سیستم استفاده از روش  asynchronous event-driven  است که باعث شده که به میزان استفاده ثابت از RAM برسیم.

asynchronous event-driven چیست؟

وب سرور ها به طریق مختلفی اقدام به مدیریت درخواست ها  (connection ) می کنند

  •     برای هر درخواست یک process جدید درست می کنند
  •     برای هر درخواست یک process جدید درست می کنند در حالی که سیستم connection poll هم دارند که تا مدتی process ها را نگه می دارد و در صورتی که در آن زمان درخواست جدیدی بیاید از process های بیکار استفاده می کنند
  •     برای هر درخواست یک thread جدید درست می کنند
  •     برای هر درخواست یک thread جدید درست می کنند در حالی که سیستم thread poll هم دارند که تا مدتی thread ها را نگه می دارد و در صورتی که در آن زمان درخواست جدیدی بیاید از thread های بیکار استفاده می کنند
  •     یک process همه event ها را مدیریت می کند. (قبول درخواست، پاسخ به کاربر، خواندن داده و … )
  •     ترکیبات روش ها

Nginx از روش چهارم استفاده می کند به همراه ساخت process برای مجموعه از event ها … البته مقداری مشخص را در config مشخص می کند. همه این ها برای این است که بیشترین استفاده را از سیستم خود بکنیم.

به طور کلی باز کردن process و thread هزینه بر است و از آن مهمتر مدیریت اینهاست. وب سرورهایی شبیه Apache که  process و thread هستند با درخواست های زیاد به شدت درگیر مدیریت  process و thread می شوند که در نتیجه فشار زیاد تری به سرور می آورند

http://www.devside.net/articles/apache-performance-tuning
The more RAM your system has, the more processes [and threads] Apache can allocate and use; which directly translates into the amount of concurrent requests/clients Apache can serve.

ارتباط مستقیمی بین RAM و درخواست ها در این وب سرور ها وجود دارد که در روش nginx تا جای ممکن از استفاده ی اضافه آن جلوگیری شده است.

توضیح دیگری را دیدم که جالب به نظر می رسید.#

فکر کنید که وب سرور یک پیتزا فروشیست که باید سفارش ها را از طریق تلفن دریافت کند. در روش process و thread فروشگاه کارمند استخدام می کند (process و thread) که هرکدامشان یک خط تلفن دارند و هر کدام سفارش را از طریق تلفن می گیرند و صبر می کنند تا پیتزا حاضر شود تا به مشتری بگویند ( هنوز تلفن قطع نشده) پیتزای شما حاضر است.

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

nginx چه کارهایی بلد است؟

nginx علاوه بر این که یک وب سرور است  reverse proxy و e-mail (IMAP/POP3) proxy هم هست … علاوه بر درخواست های http در خواست های مربوط به IMAP و POP3 هم می تواند از امکانات nginx استفاده کند. در این روش شما می توانید از روش ها loadbalancing و چیزهایی از این قبیل برای ایمیل استفاده کنید. البته شما می توانید حتی کارهای عجیب غریبی مثل authentication mail را هم از طریق nginx انجام دهید.

وب سرور Nginx چیست؟

وب سرور Nginx چیست؟

reverse proxy درخواست های بیرونی را به صورت صف شده و جاهای مختلف می فرستد

  •     reverse proxy ها موجودی سرور های شما را مخفی می کنند و همه ی دنیا شما را از دریچه reverse proxy می بینند.
  •     تمام درخواست ها از reverse proxy می گذرد پس جای مناسبی برای firewall ها و … است
  •     reverse proxy درخواست ها به صورت گسترده ای می تواند پخش کند.
  •     reverse proxy فشار را با cache کردن محتوای صفحات ثابت می تواند کم کند
  •     reverse proxy با فشرده سازی محتوای خروجی سرور ها می تواند زمان درخواست ها را کم کرده و پاسخ به درخواست ها را سریع تر کند.
  •     درخواست ها بین سرور reverse proxy و سرور اصلی به سرعت انجام می شود و connection در reverse proxy باز می ماند و سرور اصلی در گیر نمی شود. ( روش SpoonFeeding )
ادامه مطلب

دامنه com. یا org. یا net. کدام بهتر است؟

دامنه com. یا org. یا net. کدام بهتر است؟ 

انتخاب بین دامنه های .com و .org و .net

یکی از مشکل ترین انتخاب ها برای تعیین دامنه انتخاب پسوند مناسب مخصوصا مابین سه پسوند دامنه اصلی com. و net. و org. است.

از نظر SEO و به صورت فنی هیچ فرقی بین این سه پسوند دامنه با یکدیگر وجود ندارد.

هر سایت با محتوای مناسب و نزدیک تر به عبارت جستجو در موتورهای جستجو رتبه مناسب تری کسب می کند.

پسوند دامنه com.

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

پسوند دامنه org.

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

انتخاب پسوند org. فقط برای سازمان های غیر انتفاعی و خیریه توصیه می شود.

پسوند دامنه net.

پسوند دامنه net. پسوند پیش فرض برای شرکت های اینترنتی و ارائه دهندگان خدمات شبکه های کامپیوتری است ولی شاید آخرین انتخاب برای یک شرکت تجاری یا کسب و کار اینترنتی باشد. با این که پسوند دامنه net. در آمار، پرطرفدارتر از org. است ولی برای کاربران مزیت خاصی ندارد و شاید در نظر بیشتر کاربران org. و com. پسوند های معتبرتری باشند. البته بسیاری دامنه net. را نوعی پشتیبان برای com. می دانند که شرکت ها برای جلوگیری از دسترسی رقبا و حفظ کپی رایت اقدام به خرید آن می کنند.

دامنه های سطح بالا

هفت نام دامنه سطح بالا و به نوعی اولیه از آغاز توسعه اینترنت در سال 1998 توسط ICANN انتخاب شده اند. از این هفت نام دامنه ی سطح بالا، سه نام دامنه com. و org. و net. عمومی هستند و می توانند توسط افراد حقیقی یا حقوقی خریداری شوند. چهار نام دامنه دیگر شامل edu. و gov. و mil. برای ایالات متحده و int. برای سازمان های بین المللی، انحصاری به شمار می آیند. 

مقایسه آماری

در حالی که حدود 75 درصد از دامنه های ثبت شده در اینترنت com. هستند. اما دامنه های net. حدود 10 درصد و org. حدود 7 درصد از دامنه های ثبت شده را به خود اختصاص داده اند.

آمار دامنه های سطح بالا
منبع: The Verisign Domain Report Q1 2015, Vol.12 – Issue 1, March 2015

اعتماد و اعتبار

بارها و بارها از سوی گوگل عنوان شده که دامنه های مختلف فاکتور کاهش یا افزایش رتبه یک سایت نیستند اما عده زیادی از افراد نتایج آماری استقبال از یک دامنه مانند com. را در افزایش اعتبار سایت بی تاثیر نمی دانند. غالب کاربران نظر مثبتی به دامنه های com. دارند. البته اعتبار org. نیز نزد کاربران بالاست. اما دامنه هایی مانند info. یا biz. یا دامنه های رایگان به علت استفاده توسط اسپمرها و متقلب ها بازخورد خوبی در نگاه جستجوکنندگان ندارند.

توصیه می شود اگر دامنه com. برای نام انتخابی شما نبود نام دیگری انتخاب کنید

ادامه مطلب

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

How to access a hosting account via SSH

To access your hosting account via SSH, you should:

1. Contact our hosting support via Live Chat or via ticket system in order to enable SSH access for your account.

2. Open your SSH client, put your domain name or the IP address of the server into the Host Name field (you can also use server name here, you can check it using this tutorial), enter 21098 into the Port field, choose SSH as your connection type and press the Open button:

3. You will receive the Putty Security Alert. Press OK:

4. When prompted, enter your cPanel username and password (when you enter the password, it is automatically hidden for the security purposes):

login_succeed.JPG

That’s it!

ادامه مطلب

نرم افزارهای مورد نیاز برای ارتباط SSH

How to get an SSH client

To access your account via SSH, you should download and install one of available SSH clients. You can find the list of free SSH clients in the table below. If you have Windows, we recommend to use PuTTY as your SSH client.

SSH Client Operating Systems Supported Download
PuTTY Windows and Unix
WinSCP Windows (SCP and SFTP, no SSH)
Fugu Macintosh
Cyberduck Macintosh (SFTP only) Download Cyberduck
ادامه مطلب

مفهوم SSH

What is SSH?

Secure Shell or SSH is a network protocol that allows data to be exchanged using a secure channel between two networked devices. The two major versions of the protocol are SSH-1 and SSH-2.

Shell is a program to log into another computer over a network to execute commands on a remote machine and to move files from one machine to another. It provides strong authentication and secure communications over insecure channels.

SSH was designed as a replacement for Telnet and other insecure remote shells (rlogin, rsh, rcp, and rdist), which send information, notably passwords, in plain text, rendering them susceptible to packet analysis. The encryption used by SSH is intended to provide confidentiality and integrity of data over an unsecured network, such as the Internet.

ادامه مطلب

نحوه فعال سازی G Suite Google Apps در سی پنل

How to activate G Suite (Google Apps) for Calendar

How to activate G Suite (Google Apps) for Calendar

Google Calendar service allows you to create, store and share online calendars for better collaboration with your team. You are free to choose, whom to share your calendar with: those can be available for any user out there; can be shared with the help of URL invites only or with your own list of trusted viewers (both from your Business team and outside).

NOTE: Before proceeding with DNS configuration, make sure that your domain has passed ownership validation.

In order to set up Calendars, follow the steps below:

for cPanel paper_lantern theme
for cPanel x3 theme

for cPanel paper_lantern theme:

1. Log into your cPanel account > Exclusive for Namecheap Customers section > Google Apps menu:

2. After that, select the Configure Google Apps for Calendar option:

3. Then select the required domain name or subdomain from the drop-down menu and click the Configurebutton to finish the setup process:

4. Now you can log into Google Docs following the https://docs.google.com/a/yourdomain.com link.

5. You can also customize the login URL to Google Calendars from your Google Admin console:

6. Click on Google Apps to see the full list of apps:

7. Move to the Calendar menu then:


8. Once there, navigate to the General Settings section:

9. Hit Change URL then:

10. Switch to the custom option, specify the desired subdomain and hit Save to confirm the change:

11. Note, that Google Apps menu in cPanel configures DNS records for calendar subdomain only.

If you wish to use another subdomain for Calendar access, make sure that you create the corresponding subdomain in Advanced Zone Editor menu in cPanel and add a CNAME record with the following value – ghs.google.com:

for cPanel x3 theme:

1. Log into your cPanel account > Exclusive for Namecheap Customers section > Google Apps menu:

2. After that, select the Configure Google Apps for Calendar option:

3. Then select the required domain name or subdomain from the drop-down menu and click the Configurebutton to finish the setup process:

4. Now you can log into Google Docs following the https://docs.google.com/a/yourdomain.com link.

5. You can also customize the login URL to Google Calendars from your Google Admin console:

6. Click on Google Apps to see the full list of apps:

7. Move to the Calendar menu then:


8. Once there, navigate to the General Settings section:

9. Hit Change URL then:

10. Switch to the custom option, specify the desired subdomain and hit Save to confirm the change:

NOTE: The Google Apps menu in cPanel configures DNS records for calendar. subdomain only. If you wish to use another subdomain for Calendar access, make sure that you create the corresponding subdomain in the Advanced DNS Zone Editor menu in cPanel and add a CNAME record with the following value: ghs.google.com

That’s it!

ادامه مطلب

نحوه ایجاد یک صفحه Suspension در WHM

How to create a suspension page

The suspension page is the HTML page that will appear if someone is attempting to access the site that has been suspended. You can modify the page and add there any desired information.

In order to customize your suspension page follow the steps below:

1. Log into your WHM and go to Account Functions

2. Click on Modify Suspended Account Page. You may completely change the default suspension page by pasting the HTML code of your page over the content of the default suspended account page or just modify the provided HTML code.

3. Save the changes once done:

That’s it!

ادامه مطلب

نحوه ایجاد یک پکیج در WHM

How to create a package

hosting package is simply a set of functions, limitations and resources each cPanel account may have within a Reseller Hosting Account.

Basically, having different packages with a different set of functions and limitations allows to provide a range of hosting accounts based on particular features.

NOTE: It is recommended to configure a hosting package prior to creating a new cPanel account in WHM to simplify further cPanel accounts management process.

To create a new package in WHM, you will need to do the following:

1. Log into WHM using http://domain.com/whm or https://hostname_server/whm
2. Navigate to the Add a Package menu in the section Packages
3. Set appropriate quotas in the Resources section
4. Choose required settings for the package in Settings, including Feature List
5. Click on the Add button:

That’s it!

ادامه مطلب