آموزش هایی از وب سرور nGinx - مبتدی تا پیشرفته
با عرض سلام خدمت دوستان عزیز .
همونطور که میدونیم وب سرور های زیادی وجود دارند که هر کدوم طرفدارای خودشون رو دارن و در این میان وب سرور nGinx به خاطر پایداری خیلی خوب ، مصرف کم و بهینه از منابع ، امنیت بالا و دیگر خصوصیاتی که داره طرفداران زیادی رو پیدا کرده و از طرفی خیلی از مدیران سرور دوست دارن که از این وب سرور استفاده کنند ولی به خاطر کانفیک هایی که داره مجبورن از اون استفاده نکنند یا هزینه زیادی بابت کانفک این وب سرور بپردازند .
از این رو برآن شدم که این وب سرور رو از مبتدی تا پیشرفته و نحوه کانفیک آون رو کامل توضیح بدم تا دوستان عزیز هم این زمینه بی بهره نمونن .
قوانین حاکم بر این تاپیک :
1- به هیچ عنوان سوالات و مشکلات خودتون رو در این تاپیک مطرح نکنید و همه در یک تاپیک جدا سوالان و مشکلات خودتون رو مطرح کنید
2- اگه فکر میکنند که مطلبی رو جا انداختم و مفیده که آموزش داده بشه توی پیغام خصوصی اطلاع بدن
لینک بخش سوالات و مشکلات : سوالات و مشکلات تاپیک : آموزش های از وب سرور nGinx - مبتدی تا پیشرفته
با تشکر
علی فتاحی
پاسخ : آموزش های از وب سرور nGinx - مبتدی تا پیشرفته
تا این مرحله شما باید وب سرور را نصب نمایید .
توی پست قبلی قرار شد نحوه ساخت init.d برای nGinx توضیح بدم که چک کردن در آخرین ورژن خودش این کار رو انجام میده ولی من به صورت خلاصه این مطلب رو مینوسیم برای دوستانی که از ورژن های قدیمی تر استفاده میکنند و اسکریپت init.d را ندارند
1- به مسیر init.d میرویم
2- یک فایل به نام nginx با هر ویرایشگری میسازیم . در این مرحله من از nano استفاده میکنم :
کد های زیر را در آن کپی کرده و در نهایت با کلید های ctrl+o سپس ctrl+x از ان خارج شوید . لازم به ذکر است این کار را با یوزر root انجام دهید .
کد:
#! /bin/sh
# Author: Ryan Norbauer http://norbauerinc.com
# Modified: Geoffrey Grosenbach http://topfunky.com
# Modified: Clement NEDELCU
# Reproduced with express authorization from its contributors
set –e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
SCRIPTNAME=/etc/init.d/$NAME
# If the daemon file is not found, terminate the script.
test -x $DAEMON || exit 0
d_start() {
$DAEMON || echo -n " already running"
}
d_stop() {
$DAEMON –s quit || echo -n " not running"
}
d_reload() {
$DAEMON –s reload || echo -n " could not reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
reload)
echo -n "Reloading $DESC configuration..."
d_reload
echo "reloaded."
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
# Sleep for two seconds before starting again, this should give the
# Nginx daemon some time to perform a graceful stop.
sleep 2
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
exit 3
;;
esac
exit 0
سپس دستور زیر را برای مجوز دسترسی و اجرا اعمال نمایید
کد:
chmod +x /etc/init.d/nginx
خب کار تا اینجا به پایان رسید . نحوه کار کردن با این اسکریپت
جهت اجرا ، ری استارت ، ریلود و توقف برنامه از دستورات زیر استفاده میکنیم .
کد:
/etc/init.d/nginx start
/etc/init.d/nginx restart
/etc/init.d/nginx reload
/etc/init.d/nginx stop
میریم به مبحث بعدی .
مسیر پیش فرض فایل های خروجی وب سرور /usr/local/nginx میباشد که در ادامه در مثال ها از این مسیر استفاده خواهیم کرد .
یوزر ها و گروه ها Users & Groups
دانستن ساختار پروسس های nGinx و مخصوصا یوزر ها گروهایی که پردازش ها مختلف بر روی آنها اجرا میشود دارای اهمیت بسیار زیادی میباشد . یکی از مشکلات بسیار شایع در تنظیمات nginx به دلیل تنظیمات اشتباه یوزر یا گروه یوزر و نداشتن سطح دسترسی به فایل ها توسط nGinx میباشد که در نهایت موجب روبرو شدن با پیغام 403 Forbidden در صفخات به دلیل نداشتن سطح دسترسی nginx به فایل ها میباشد .
2 سطح از پروسس ها با احتمال سطح دسترسی های متفاوت وجود دارد .
1- Nginx master process که باید توسط کاربر root اجرا شود . در اغلب سیستم های لینوکسی برنامه هایی که با سطح دسترسی root اجرا میشوند توانایی یاز کردن هرنوع پورتی را با استفاده از سوکت tcp را دارا میباشند در حالی که دیگر کاربران تنها قادر به باز کردن پورت های بالای 1024 فقط برای گوش دادن Listeting به پورت میباشند .
اگر شما nginx را در root اجرا نکرده اید پورت های استاندارد 80 و 443 در دسترس نخواهند بود . علاوه بر آن دستور user که به شما اجازه مشخص کردن user و group ها به پردازش های worker ها را میدهد در نظر گرفته نمیشود .
2- Nginx worker processes که توسط کاربری که در هنگام کانفیگ نصب با دستور user مشخص کرده بودید اجرا میشود . تنظیمات کانفیگ ها دارای تقدم بیشتری نسبت به تنظیماتی دارند که شما در هنگام نصب اعمال کرده اید . اگر شما هیچ کدام از انها را مشخص نکرده اید ، پردازش های worker ها توسط یوزر و گروه nobody اجرا خواهد شد .
سوییچ های nGinx در ترمینال :
فایل اجرایی nginx فرمان های مختلفی را جهت انجام کارهای مختلف دریافت مینماید . برای دریافت لیست کاملی از این فرمان ها . ابتدا شما باید به مسیر فایل اجرایی nginx رفته و با استفاده از فرمان زیر لیست کامل را دریافت نمایید .
کد:
cd /usr/local/nginx/sbin
./nginx -h
جهت متوقف کردن nginx
جهت خروج از nginx
جهت ایجاد مجدد فایل های لاگ
جهت بارگذاری مجدد فایل های کانفیگ
جهت تست فایل های کانفیگ از نظر املایی و ... از دستور زیر استفاده میشود .
جهت تست فایل کانفیگ که در مسیر nGinx نمیباشد از دستور زیر استفاده نمایید
کد:
./nginx –t –c /foo/path/file.conf
که /foo/path/file.conf مسیر فایل دلخواه شما میباشد .
زمانی لازم است که شما بدانید از چه سوییچ هایی هنگام نصب در مرحله configure استفاده کرده اید . سوییچ زیر این کار را با پردازش فایل های کانفیک و ... برای شما انجام میدهد .
------------
اضافه کردن nginx به استارت آپ .
در سیستم عامل های Debian Base نظیر ubuntu از دستور زیر استفاده نمایید .
کد:
update-rc.d –f nginx defaults
در سیستم عامل های RedHat Base نظیر CentOS
کد:
chkconfig --add nginx
برای چک کردن صحت اضافه شدن هم میتونید از دستور زیر استفاده کنید :
کد:
chkconfig --list nginx
خب این بحث هم تموم شد . در ادامه سعی میکنم پر محتوا تر توضیح بدم
باتشکر
علی فتاحی
پاسخ : آموزش های از وب سرور nGinx - مبتدی تا پیشرفته
ایا می شه کاری کرد برای هاستینگ هم مناسب باشه ؟
پاسخ : آموزش های از وب سرور nGinx - مبتدی تا پیشرفته
با عرض سلام خدمت دوستان عزیز .جا داره از همه دوستان پوزش طلب کنم به خاطر غیبت کبری که داشتم .:d
خب امروز میخوام برم سر وقت دستورات کانفیگ اولیه nginx
تو این قسمت قرار بود دستورات و بلاک ها و ... رو به شما دوستان آموزش بدم که بدوم معطلی میریم سر آموزش
دستورات از ماژول های انجینکس می آیند به این معنی که اگر شما یک ماژول را فعال نمایید یک سری از دستورات مربوط به آن به مجموعه دستورات کانفیک وب سرور اضافه خواهد شد .
بلاک events
نمونه کد :
کد:
events
{
worker_connections 1024;
}
توضیحات :
بلاک events که شما در فایل کانفیگ پیش فرض میتوانید ببینید از ماژول events آمده است .برخی از دستورات هستند که فقط در این بلاک کار خواهند کرد . برای مثال دستور worker_connections فقط در بلاک events کار خواهد کرد . در این میان یک استثتاء وجود دارد که برخی از دستورات میتواند در خارج از بلاک ها و در قسمت root کانفیگ ها قرار میگیرد که تاثیر آن بر روی کل سرور خواهد بود .
توجه شود در برخی موارد میتوان از بلاک های تو در تو استفاده نمود . بدین صورت :
کد:
http {
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/example.com.log;
location ^~ /admin/ {
index index.php;
}
}
}
این مثال به شما نشان میدهد که چطور با استفاده از بلاک http یک وب سایت را سرویس دهی کنید ( معرفی به وب سرور و ساخت virtual host )
در داخل بلاک http شما میتوانید یک یا چند بلاک server تعریف نمایید . یلاک سرور به شما اجازه کانفیگ یک virtual host را میدهد . در این مثال بلاک server شامل چند کانفیک میباشد که بر روی تمامی درخواستهایی که برای example.com می آید اعمال میشود .
در داخل بلاک سرور شما میتوانید یک یا چند بلاک location اضافه نمایید . این بلاک به شما اجازه میدهد تا بتوانید تنظیمات و کانفیگ ها را فقط در زمانی که یک uri مشخص درخواست میشود اعمال نمایید . در ادامه مباحث به توضیحات بیشتر در مورد یلاک location در مکانهای مختلف میپردازیم .
اگر ما در ساختار بلاک های تو در تو از داخلی ترین بلاک به بیرونی ترین بلاک شروع به حرکت نماییم . هر بلاک فرزند بلاک بالاتر از خودش به حساب می آید . هر یلاک فرزند میتواند یک سری از دستورات را از بلاک پدرش به ارث ببرد ( در صورتی که خود دارای آن دستور نباشد )
دستور access_log که در بلاک server تعربف شده است مشخص مینماید که تمامی درخواست های HTTP برای این server باید در یک فایل text لاگ شود . این دستور نیز در داخل یلاک فرزند location صدق میکند و همچنین شما قادر هستید که با استفاده مجدد از دستور access_log آن را غیر فعال نمایید :
کد:
[…]
location ^~ /admin/ {
index index.php;
access_log off ;
}
[…]
در این مورد . لاگ گیری در تمامی قسمت های این وب سایت به حز مکان /admin/ فعال میباشد .
پاسخ : آموزش های از وب سرور nGinx - مبتدی تا پیشرفته
نقل قول:
نوشته اصلی توسط
musicayob
سلام و درود ، دوستان کسی می دونه چگونه می توانیم تعداد در خواست های nginx را برای یک ای پی محدود کرد ؟
vps ویندوز دارم
سلام
ابتدا یاید با دایرکتو limit_conn_zone یک zone تعریف کنید . بعد هم داخل تنظیمات server با دایروکتو های limit_conn و limit_rate تعداد کانکشن ها و سرعت کانکشن ها رو هم محدود کنید
پاسخ : آموزش های از وب سرور nGinx - مبتدی تا پیشرفته
نقل قول:
نوشته اصلی توسط
majam
سلام من میخام تو nginx که رو سنتوز نصب کردم لیست دایروکتوری رو مثل IIS به کاربرام نشون بده باید چکار کنم ؟؟؟
سلام
خیلی راحت با اضافه کردن یک دستور در یلاک location میشه این کار رو کرد
اینم از دستورش
پاسخ : آموزش های از وب سرور nGinx - مبتدی تا پیشرفته
اون سایت هایی که دوستان معرفی کردن چندان کامل تبدیل نمیکنه . htaccess ها هم کار نمیکنند مگر در حالتی که با apache پـــروکـــسی بشن در غیر اینصورت باید تبدیل بشن و محل قرار گرفتن اون فایل ها میتونه هرجایی باشه فقط باید تو کانفیگ اصلی تعریف بشه .
برای ورد پرس هم میتونید از این لینک استفاده کنید
WordPress NGINX Rewrite Rules
پاسخ : آموزش های از وب سرور nGinx - مبتدی تا پیشرفته
کد:
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
ارور میده هنگام ./configure
چه کنم ؟ میشه اموزش بدید چگونه انجین ایکس رو برای کلوکسو اماده کنم ؟
تشکر