nginx چیست ؟ آموزش نصب و راهاندازی وب سرور Nginx
پیش از آنکه بخواهیم نحوه نصب و راه اندازی Nginx را به شما عزیزان آموزش دهیم، باید بگوییم nginx چیست؟ در این مقاله تمامی نیازهای شما عزیزان بررسی شده و بعد از اتمام مقاله به راحتی امکان نصب nginx را خواهید داشت. پس با ما همراه باشید.
nginx چیست ؟
در واقع باید پرسید وب سرور nginx چیست؟ Nginx به عنوان یکی از محبوبترین و بهترین وب سرورها معرفی می شود که بصورت open source برای پروتکل های POP3، SMTP، HTTPS، HTTP و IMAP استفاده می شود. انجیناکس بر روی سیستم عامل های مختلف مانند Solaris، OS X، HP-UX، AIX و سیستم عامل لینوکس و ویندوز همچنین انواع BSD ها قابل اجراست.
مهم ترین مزیت Nginx نوع web server حجم پایین آن بوده و به دلیل داشتن این حجم پایین نیز، از رم پایینی استفاده میکند. در نتیجه، در پاسخگویی به کاربر، از سرعت بالایی برخوردار است. وب سرور Nginx نیز مانند تمام وب سرورها، برای پاسخگویی به درخواستهای کاربران و در اختیار قرار دادن اطلاعات به آنها از روشهای گوناگونی استفاده می کند.
Nginx اساسا برای خدمات رسانی به محتوای صفحات پویای HTTP بر روی شبکه تعبیه شده است. حال پیش از آموزش نصب Nginx باید به این سوال پاسخ دهیم که چرا nginx و Apache با هم اجرا می شوند؟ در ادامه این مقاله که توسط گروه تولید محتوای ایران هاست ( ارائه دهندهی خدمات خرید سرور مجازی خارج ) تهیه شده همراه ما باشید تا بیشتر در مورد این مواد صحبت کنیم.
چرا Nginx و Apache را با هم اجرا کنیم؟
انجیناکس و apache هر دو، سرورهای قدرتمند و مؤثری هستند. آپاچی در حال حاضر به عنوان سرور شماره ۱ برای وبسایتها،سلطنت میکند. زمان انتشار عمومی apache در سال ۲۰۰۶ بود. سپس وب سرور nginx جهان را با طوفانی به تصرف خود درآورد و اکنون سرور شماره ۲ سایتهای فعال است. قدرت apache و سرعت nginx به خوبی شناخته شده است.
با این حال، هر دو سرور دارای اشکالاتی نیز، هستند — آپاچی در حافظه سرور دچار مشکلاتی است، در حالی که ان جین ایکس (عالی در static files) برای محتوای پویا به کمک php-fpm یا ماژولهای مشابه، نیاز دارد. با این حال، میتوان دو سرور وب را با هم ترکیب کرد. انجیناکس به عنوان static web server front و پردازش apache در قسمت backend میتواند ترکیبی فوقالعاده باشد.
در ادامه، نحوه نصب و راه اندازی این دو وب سرور را باهم، بررسی خواهیم کرد. همانطور که میدانید سرورهای لینوکسی centos برای نصب و راهاندازی نرم افزارها نیاز به دسترسی ssh دارند. پس از کسب دسترسی مذکور با استفاده از نرم افزار هایی مانند putty به سرور مربوطه ssh میزنیم.
چگونگی کار با putty:
Putty را دانلود و اجرا کنید. توجه داشته باشید ممکن است هشداری در مورد تأیید صحت ناشر دریافت کنید.
- اطلاعات لاگین را مانند تصویر زیر وارد بفرمایید.
- سپس بر روی دکمه open کلیک کرده تا session ssh مربوطه ایجاد گردد. توجه داشته باشید اگر اولین بار است که از این رایانه به سرور وصل میشوید، پیغام زیر را مشاهده خواهید کرد. با کلیک روی Yes، اتصال را آغاز کنید.
پس از باز شدن اتصال SSH، باید فوراً یک ترمینال را ببینید که ازشما نام کاربری را درخواست میکند:
نام کاریری یا یوزر خود و سپس پسورد را وارد کنید. لطفاً توجه داشته باشید که در هنگام تایپ رمز عبور، مکان نما خود را در حال حرکت یا کاراکتر های تایپ شده (مانند ******) نمی بینید ولی رمز عبور شما تایپ شده است و وارد میگردد. این یک ویژگی امنیتی استاندارد PuTTY است. وارد شوید.
اکنون با SSH وارد سرور خود شدهاید. شما باید خروجی مانند این را مشاهده کنید:
اکنون میتوانید اقدام به وارد کردن command های لازم، از جمله دستورات لازم برای نصب ngnix و apache نمایید.
نحوه نصب و راه اندازی Nginx
بعد از دانلود nginx برای ویندوز از اینجا، برای نصب Nginx، مخزن nginx Yum را با ایجاد پرونده nginx.repo در زیر فهرست /etc/yum.repos.d مانند شکل زیر، تنظیم کنید.
در مرحله بعد ، از yum برای نصب Nginx مطابق دستور زیر استفاده کنید.
yum install nginx
سرویس انجیناکس را شروع کنید. برای شروع مناسب، از یک سرویس یا دستور systemctl استفاده کنید.
نصب Reverse Proxy
مرحله بعدی نصب Reverse Proxy خواهد بود که در ادامه آنرا بررسی خواهیم کرد:
در این مرحله، اگر به عنوان مثال example.com را بار گذاری کنید، صفحه “Welcome to Nginx” را مشاهده خواهید کرد.
اکنون باید برای این کار، در پرونده /etc/nginx/conf.d/default.conf دو مورد زیر را انجام دهید:
در مورد پارامتر مکان موجود، نظر دهید.
- پارامتر مکان را از حالت کامن، خارج کنید.
- همانند شکل زیر پارامتر مکان جدید را با مقادیر پراکسی، اضافه کنید.
پرونده پیکربندی Nginx default.conf است که در زیر فهرست /etc/nginx/conf.d/ قرار دارد.
سپس در همان پرونده default.conf، پارامتر مکان زیر را با مقادیر ذکر شده در ادامه اضافه کنید
proxy_pass جایی است که شما URL سرور مقصد که انجیناکس باید پروکسی آنرا معکوس کند، مشخص میکنید. (در این مثال، این URL است که یک برنامه سازمانی در Apache / PHP درپورت ۸۰۸۰ را در حال اجرا دارد). هر دو HTTP و https برای proxy_pass پشتیبانی میشوند. URL میتواند آدرس IP یا نام دامنه داشته باشد.
اگر بعد از آدرس و شماره پورت، همانطور که در زیر مشاهده میکنید
به عنوان مثال، میتوانید proxy_pass را مطابق شکل زیر در default.conf خود در Nginx تنظیم کنید.
در این حالت، اگر درخواست دریافتی http://example.com/userlist باشد، معکوس میشود بهhttp://app.thegeekstuff.com:8080/devapp/userslist. توجه کنید که چگونه آن را ویرایش و سپس لیست کاربر را اضافه میکند اگرچه “URL” را در URL مثال example.com مشخص نکردیم.
اگر درخواست دریافت شده به عنوان مثال example.com/userlist/detail.php?username=john باشد، proxy ان را به مقدار زیر ترجمه ترجمه خواهد کرد.
http://app.thegeekstuff.com:8080/devapp/userslist/detail.php?username=john
همچنین در proxy_pass، میتوانید از متغیر $host, $uri یا $request variable مانند شکل زیر استفاده کنید:
هنگامی که فیلد موجود را به عنوان درخواست اضافه میکنید، دستورالعمل proxy_set_header استفاده میشود. این عنوانِ درخواستی است که در سرور پروکسی، دریافت میشود (در این مثال به برنامه Apache / PHP).
در proxy_set_header ، دو قسمت زیر به طور پیش فرض با مقادیر نشان داده شده، تعریف میشود. اگر میخواهید تغییرش بدهید، باید مجدداً این مورد را، تعریف کنید.
proxy_set_header X-Forwarded-For – این آدرس مشتری را که به پروکسی متصل شده است دریافت میکند و در سربرگ HTTP به سرور پروکسی از راه دور ارسال میکند.
قابلیت های Ngnix
برخی از ویژگی های Ngnix را در اینجا ذکر می کنیم:
- امکان بازنویسی URL یا URL Rewriting
- پشتیبانی از TLS/SSL
- امکان احراز هویت با استفاده از HTTP خارجی
- سازگارd با IPV6
- وجود قابلیت Fault Tolerance
- وجود قابلیت Load Balancing
- پشتیبانی از پروتکل SPDY
- امکان فشرده سازی فایل ها
نتیجه نهایی:
در این مثال بعد از تنظیم reverse proxy زمانی که example.com را جستجو میکنید(زمانی انجیناکس فعال باشد) اتفاقی که میافتد این است که به صفحه app.thegeekstuff.com با پورت ۸۰۸۰ (جایی که apache/php در حال اجراست) درخواست ارسال میگردد. مانند تصویر زیر:
سوالات متداول
سلام
موقع وصل شدن به پورت خودم همچین اروری میگیرم :
۲۰۱۴/۰۵/۳۰ ۱۱:۵۹:۴۲ [crit] 4075#0: *6 connect() to 127.0.0.1:8001 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: “GET / HTTP/1.1”, upstream: “http://127.0.0.1:8001/”, host: “localhost:8080”
کسی میتونه راهنمایی کنه؟