ایجاد: ۱۱:۲۵ ۱۳۹۲/۱۰/۲۰
ویرایش: ۹:۳۰ ۱۳۹۴/۱/۱۳
»
nginx (که به صورت «انجین اکس» تلفظ میشود) یک کارساز وب شبیه آپاچی است که به دلیل سبکی و کارایی بالا و همچنین نداشتن محدودیتهای Apache، به عنوان یک رقیب جدیاش محسوب میشود و رشد خوب Nginx در این سالها گواه این موضوع است:
* |
Other, Rest, ... |
Nginx |
IIS |
Apache |
* |
تولد نسخه پایدار انجین اکس |
11% |
0 |
21% |
68% |
2004 |
سالهای اوج درخشش IIS |
15% |
? |
35% |
50% |
2007 |
رشد سایر کارسازهای وب از جمله انجین اکس و افول IIS |
29% |
5% |
20% |
46% |
2009 |
آشکار شدن قدرت و توانایی انجین اکس و روی آوردن بسیاری از سایتها به
آن |
15% |
15% |
17% |
53% |
2013 |
بد نیست بدانید در بین هزار و همچنین 10هزار سایت برتر دنیا، nginx بیش از سایر سروکنندهها طرفدار دارد. (
منبع)
یکی از دلایلی مهاجرت بسیاری از مدیران سرور از کارساز مشهور آپاچی به انجین اکس است که آپاچی بیش از 10 هزار کانکشن همزمان را نمیتواند پاسخگو باشد (همان مشکل C10K) در حالی که انجیناکس (همانند Node.js) با پردازش غیرهمزمان، این مشکل را حل کرده است.
البته این تنها مزیت انجیناکس نیست و مزایای دیگری نیز نسبت به سایر سرو کنندههای درخواستهای وب وجود دارد که در سایتش یا ویکیپدیا میتوانید مطالعه کنید.
یکی از مزایای انجیناکس این است که از سیستمعاملهای مختلف پشتیبانی میکند لذا علاوه بر روی سرورهای عمدتا لینوکسی، میتوانید بر روی ویندوز یا مک شخصی خود نیز آن را نصب و تنظیم کنید.
برای این منظور کافی است به سایت Nginx رفته و جدیدترین نسخه آن را که به صورت یک فایل zip است، دانلود و در پوشهای مثل c:\nginx استخراج (extract) کنید. فایل nginx.conf
فایل مربوط به تنظیمات وب سرور است (مشابه فایل httpd.conf در آپاچی و فایل web.config در IIS)
events {worker_connections 1024;}
http {
server {
listen 80;
server_name test.com;
location / {
root d:wwwhtmltest;
index index.html index.htm;
}
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
}
راهنمای کاملی در خصوص اعمال تنظیمات Nginx در بخش
مستندات سایت انجیناکس درج شده است.
انجیناکس برخلاف آپاچی از htaccess برای override کردن تنظیمات وب سرور استفاده نمیکند و این یک حسن است. زیرا مثلا وقتی کاربر درخواست صفحهای مثل site.com/a/b/c/d/e/f/g/h/i/j/k.html را میکند، سرور آپاچی مجبور است تکتک پوشههای a, b, ..., k را جستجو کند و محتویات htaccess آنها را بخواند و تحلیل کند تا بتواند به آن درخواست پاسخ دهد! در حالی که در Nginx تمامی تنظیمات فقط در همان فایل nginx.conf نگهداری میشود. (البته در Apache هم میتوان htaccess را غیرفعال کرد تا مشابه انجیناکس شود و سرور برای پاسخ به درخواستها سریعتر عمل کند. برای این منظور کافی است AllowOverride در فایل httpd.conf روی None تنظیم شود.)
همچنین دقت کنید که علاوه بر مساله پرفرمنس، htaccess مشکلات امنیتی خاص خود را نیز دارد مثلا ممکن است مدیر اجرای فایل php را در پوشه فایلهای آپلودی کاربران خاموش کرده باشد اما یک کاربر پوشهای ایجاد کند و در آن یک فایل htaccess ایجاد کرده و htaccess پوشه مادر (که مدیر تعریف کرده) را override نماید.
برخی تنظیمات انجیناکس برای امنیت و کارآیی بیشتر
کار با تنظیمات انجیناکس (همانطور که در مستندات Nginx آمده) ساده و ملموس است. در ادامه نکاتی ساده برای تنظیم بهتر Nginx عرض میشود.
طبعا با توجه به اینکه اکثر سرورهای اینترنت از نوع لینوکسی هستند، برخی آدرسدهیها و تنظیمات ناظر به سرور لینوکسی است و در سایر سرورها نیز مشابه آن است.
-
نکاتی در مورد مسیر فایلها و ویرایش تنظیمات
تنظیمات سایتهای سرو شونده با Nginx به صورت پیشفرض در پوشه /usr/local/nginx/conf/
است و فایل /usr/local/nginx/conf/nginx.conf
نیز حاوی تنظیمات اصلی و پیشفرض است.
/usr/local/nginx/html/
پوشه پیشفرض صفحات وب است.
/usr/local/nginx/logs/
پوشه پیشفرض فایلهای log مربوط به درخواستها و پیغامهای خطاست.
پس از تغییر در فایل nginx.conf میتوانید با دستور nginx -t
صحت دستورات موجود در آن را بررسی کنید و در صورت صحیح بودن با دستور nginx -s reload
تنظیمات جدید را إعمال کنید.
برای http ، پورت پیشفرض 80 و برای https ، پورت 443 است که در صورت نیاز به سادگی با فایل nginx.conf قابل تغییر است.
-
روشن کردن gzip
برای فشرده سازی محتوای صفحات و js, css برای بارگذاری سریعتر کافی است کد gzip on;
را به کانفیگ کارساز وب Nginx خود بیفزایید.
-
خاموش کردن نمایش مشخصات کارساز و ورژن آن (برای امنیت بیشتر)
برای این منظور کافی است کد server_tokens off;
را در فایل کانفیگ درج کنید.
-
افزودن هدر
X-Frame-Option
تقریبا همه مرورگرهای کاربران (حتی ie8) از این هدر پشتیبانی میکند. این هدر مهم، مانع لود یک صفحه درون iframe میشود. لود صفحه شما در iframe میتواند خطرات امنیتی متعددی را برای سایت شما و گاهی هم برای کاربر سایت شما ایجاد کند.
برای این منظور کافی است کد add_header X-Frame-Options Deny;
را در فایل کانفیگ درج کنید.
-
افزودن هدر expire
برای کش شدن فایلهای استاتیک در حافظه دستگاه کاربر به مدت طولانی (مثلا 1 سال) کافی است expires 365d;
را به کانفیگ انجیناکس سرور خود اضافه کنید.
[...این مطلب ناقص است و در آینده تکمیل خواهد شد...]
یادداشتهای مرتبط
- نکاتی برای افزایش سرعت و کارآمدی سایت
- چگونه یک هاست مناسب انتخاب کنیم؟
- معرفی چند سایت جهت آپلود رایگان فایل ها
- www در ابتدای آدرس سایت، خوب است یا بد؟