رفتن به محتوا
زیرساخت ابری

Nginx یا Apache؟ مقایسه وب‌سرورها برای میزبانی سایت

تفاوت Nginx و Apache در تنظیمات، اجرای PHP، سازگاری وردپرس و پروکسی معکوس؛ راهنمای انتخاب وب‌سرور و آزمایش عملکرد پیش از انتقال سایت.

9 دقیقه مطالعهبلاگ ابر آراد
مجله ابر آرادINSIGHTS / زیرساخت ابری

اگر سایت شما به تنظیمات موجود Apache و فایل‌های .htaccess وابسته است، حفظ Apache معمولاً مسیر کم‌تغییرتری است. اگر از ابتدا یک برنامه را با تنظیمات متمرکز، تحویل فایل‌های ثابت و هدایت درخواست به سرویس برنامه راه‌اندازی می‌کنید، Nginx گزینهٔ مناسبی برای بررسی است. هر دو می‌توانند وردپرس را میزبانی کنند؛ انتخاب باید با نیاز سایت، دسترسی تیم و آزمون عملکرد توجیه شود.

تفاوت Nginx و Apache فقط «سرعت بیشتر» یا «مصرف کمتر رم» نیست. مدل پردازش، شیوهٔ اجرای PHP، تنظیمات فعال و نوع درخواست‌ها روی نتیجه اثر دارند. برای فروشگاهی که دیتابیسِ کند دارد، تعویض وب‌سرور ممکن است مسئلهٔ اصلی را حل نکند. این راهنما کمک می‌کند پیش از انتخاب یا تغییر وب‌سرور، همین تفاوت‌های عملی را بشناسید.

وب‌سرور چه بخشی از کار سایت را انجام می‌دهد؟

وب‌سرور درخواست HTTP یا HTTPS را دریافت می‌کند و پاسخ را به مرورگر می‌فرستد. برای یک تصویر یا فایل CSS، می‌تواند فایل را از محل تعیین‌شده بخواند و تحویل دهد. برای یک صفحهٔ پویا، مانند نتیجهٔ جست‌وجوی محصول، ممکن است درخواست را به محیط اجرای برنامه بدهد تا پاسخ تولید شود.

Nginx و Apache HTTP Server نرم‌افزارند؛ با سرور مجازی، کنترل‌پنل میزبانی یا خود وردپرس یکسان نیستند. وب‌سرور روی سیستم‌عامل اجرا می‌شود و باید با برنامه و منابع ماشین هماهنگ باشد. انتخاب یکی از آن‌ها، وجود بکاپ، پشتیبانی مدیریتی یا تنظیم آمادهٔ سایت را تضمین نمی‌کند.

در هاست آماده، معمولاً ارائه‌دهنده ترکیب نرم‌افزارها را تعیین می‌کند. در VPS با دسترسی مدیریتی، تیم شما اختیار بیشتری برای انتخاب و پیکربندی دارد؛ مسئولیت نگهداری هم باید روشن باشد. اگر هنوز دربارهٔ مدل اجرا تصمیم نگرفته‌اید، مقایسهٔ هاست، سرور مجازی و سرور اختصاصی را پیش از انتخاب نرم‌افزار بخوانید.

تفاوت Nginx و Apache در تنظیمات و پردازش درخواست‌ها

Nginx از مدل رویدادمحور استفاده می‌کند: پردازش‌های کاری آن می‌توانند وضعیت چندین اتصال را دنبال کنند و هنگام آماده‌شدن رویداد، کار لازم را انجام دهند. این مدل برای مدیریت اتصال‌های هم‌زمان مفید است؛ اما تعداد کاربران قابل پشتیبانی را نمی‌توان فقط از نام نرم‌افزار تعیین کرد. منابع، محدودیت‌ها و زمان تولید پاسخ هم مؤثرند. راهنمای رسمی Nginx ساختار پردازش‌ها و تنظیمات را توضیح می‌دهد.

Apache چند مدل پردازش یا MPM دارد. رفتار prefork، worker و event یکسان نیست. در مدل event، بخشی از مدیریت اتصال‌های منتظر به رشتهٔ شنونده سپرده می‌شود تا رشته‌های کاری برای درخواست‌های دیگر آزاد شوند. بنابراین گزارهٔ «Apache همیشه برای هر اتصال یک پردازش جدا می‌سازد» توصیف درستی از همهٔ پیکربندی‌های آن نیست. مستندات Apache event این تفاوت و محدودیت‌های آن را شرح می‌دهد.

برای انتخاب، تفاوت‌هایی را مقایسه کنید که روی کار تیم اثر دارند:

معیارNginxApache
مدیریت اتصالمدل رویدادمحور با پردازش‌های کاریوابسته به MPM فعال؛ مدل event هم در دسترس است
محل تنظیماتتنظیمات وب‌سرور و فایل‌های وابسته، زیر نظر مدیرتنظیمات اصلی؛ امکان .htaccess در محدودهٔ مجاز
اجرای PHPمعمولاً ارسال درخواست به PHP-FPM از مسیر FastCGIامکان اتصال به PHP-FPM؛ روش اجرا به پیکربندی بستگی دارد
پروکسی معکوسدریافت درخواست و هدایت آن به سرویس برنامهقابلیت مشابه با ماژول‌های مربوط
معیار انتخابتناسب مسیر درخواست و مدیریت متمرکز با پروژهسازگاری تنظیمات و ماژول‌ها با نیاز پروژه

این جدول رتبه‌بندی سرعت نیست. برای مقایسهٔ معتبر Apache با Nginx، باید مدل پردازش، ماژول‌ها و شیوهٔ اجرای برنامه را هم مشخص کنید.

نقش .htaccess در انتخاب و انتقال سایت

در Apache، فایل .htaccess می‌تواند بخشی از تنظیمات را در سطح پوشه نگه دارد؛ برای نمونه، بعضی قواعد بازنویسی نشانی یا کنترل دسترسی. اجرای این دستورها به مجوزهایی مانند AllowOverride وابسته است. وجود فایل به‌تنهایی ثابت نمی‌کند که همهٔ قواعد آن اجرا می‌شوند.

این قابلیت برای کاربری مفید است که به تنظیمات اصلی سرور دسترسی ندارد، اما اجازهٔ تغییر بخشی از رفتار سایت را دارد. اگر دسترسی مدیریتی دارید، راهنمای رسمی Apache دربارهٔ .htaccess ترجیح می‌دهد تنظیمات در پیکربندی اصلی قرار بگیرند؛ از جمله برای کاهش بررسی فایل‌ها در مسیر درخواست و کنترل بهتر تغییرات.

Nginx فایل .htaccess را مانند Apache تفسیر نمی‌کند. قواعد لازم باید در تنظیمات مناسب Nginx پیاده شوند. راهنمای Nginx در مستندات وردپرس نیز این تفاوت و اثر آن بر پیوندهای یکتا را توضیح می‌دهد.

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

برای افزونه‌هایی که دستورهای مخصوص وب‌سرور می‌سازند، سازگاری را جدا بررسی کنید. خود افزونه ممکن است فعال شود، درحالی‌که قواعد کش یا محدودیت دسترسی آن روی مقصد اعمال نشده باشند. این موضوع در انتقال سایت از ظاهر صفحهٔ نخست مشخص نمی‌شود.

از مطالعه تا انتخابسرویس مناسب پروژه‌تان را بررسی کنید.

محصولات ابر آراد را ببینید و مشخصات هر سرویس را مقایسه کنید.

بررسی محصولات

برای وردپرس و PHP، مسیر تولید پاسخ را بشناسید

وردپرس برای تولید صفحه به اجرای PHP و دسترسی به دیتابیس نیاز دارد. Nginx معمولاً درخواست PHP را از طریق FastCGI به PHP-FPM می‌فرستد؛ PHP-FPM پردازش‌های اجرای PHP را مدیریت می‌کند. این مسیر با ارسال فایل ثابت تفاوت دارد. ماژول FastCGI در Nginx تنظیمات این ارتباط را مشخص می‌کند.

Apache هم می‌تواند درخواست را از طریق ماژول mod_proxy_fcgi به PHP-FPM بدهد. پس مقایسهٔ «Nginx با PHP-FPM» و «Apache با روش دیگری برای اجرای PHP» فقط مقایسهٔ دو وب‌سرور نیست؛ مسیر اجرای برنامه هم تغییر کرده است.

در نیازمندی‌های رسمی وردپرس، هر دو Apache و Nginx پیشنهاد شده‌اند. برای انتخاب میان آن‌ها، سازگاری نسخهٔ PHP، افزونه‌های لازم، قواعد نشانی‌ها، HTTPS و شیوهٔ نگهداری را بررسی کنید. هیچ‌یک صرفاً با نصب‌شدن، وردپرس را به یک سایت بهینه تبدیل نمی‌کند.

در فروشگاه، صفحهٔ عمومی محصول ممکن است از کش پاسخ بگیرد، اما سبد خرید و تسویه‌حساب به پردازش شخصی نیاز دارند. نتیجهٔ سریع برای یک صفحهٔ کش‌شده را به ثبت سفارش تعمیم ندهید. ظرفیت PHP-FPM، زمان پرس‌وجوی دیتابیس و ارتباط با درگاه می‌توانند در همان مسیر تعیین‌کننده باشند.

اگر بعد از تغییر وب‌سرور، صفحهٔ نخست بهتر شد ولی ثبت سفارش همچنان کند است، زمان همان عملیات و گزارش برنامه را بررسی کنید. برای تفکیک این عوامل، راهنمای عیب‌یابی سرعت وردپرس مسیر بررسی افزونه، دیتابیس و منابع سرور را توضیح می‌دهد.

پروکسی معکوس و استفادهٔ هم‌زمان از دو وب‌سرور

پروکسی معکوس درخواست کاربر را دریافت می‌کند، آن را به سرویس مقصد می‌دهد و پاسخ را برمی‌گرداند. این نقش در Nginx کاربرد دارد و Apache نیز با ماژول mod_proxy آن را فراهم می‌کند. بنابراین پروکسی معکوس قابلیت انحصاری Nginx نیست.

در یک ترکیب نمونه، Nginx در ورودی قرار می‌گیرد و فایل‌های عمومی مشخص را مستقیماً تحویل می‌دهد؛ درخواست‌های دیگر به Apache فرستاده می‌شوند و Apache با پیکربندی مناسب، PHP را اجرا می‌کند یا به PHP-FPM می‌سپارد. این چینش می‌تواند حفظ بخشی از تنظیمات فعلی Apache را ممکن کند، اما قواعد مربوط به مسیرهایی که Nginx مستقیماً پاسخ می‌دهد، باید همان‌جا هم درست اعمال شوند.

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

Nginx می‌تواند با پیکربندی مناسب درخواست‌ها را میان چند سرویس برنامه توزیع کند؛ راهنمای رسمی توزیع بار این مسیر را توضیح می‌دهد. اما وب‌سرور، ماشین یا ظرفیت برنامه را خودکار ایجاد نمی‌کند. چند نمونهٔ برنامه به برنامه‌ریزی برای نشست کاربران، فایل‌ها، داده‌ها و دسترس‌پذیری نیاز دارند؛ این تصمیم جدا از انتخاب اولیهٔ وب‌سرور است.

برای پروژهٔ خود کدام گزینه را انتخاب کنید؟

برای سایت موجودی که روی Apache درست کار می‌کند و قواعد محلی یا ماژول‌های ضروری دارد، ابتدا همان محیط را بررسی و بهینه کنید. اگر دلیل مشخصی برای تغییر وجود ندارد، حفظ محیط سازگار منطقی است. در یک هاست آماده نیز کیفیت منابع، پشتیبانی و بازیابی را در کنار نوع وب‌سرور بسنجید.

برای راه‌اندازی تازهٔ یک برنامه با تنظیمات متمرکز و سرویس اجرای جدا، Nginx گزینهٔ مناسبی برای بررسی است. این پیشنهاد به شرطی مفید است که تیم، مسیر درخواست و تنظیمات را بشناسد و بتواند آن را نگهداری کند. اگر تجربه و ابزارهای تیم بر Apache استوارند و نیازها پوشش داده می‌شوند، همان گزینه هم می‌تواند مناسب باشد.

برای سایتی که فایل‌های عمومی زیادی تحویل می‌دهد، Nginx را در آزمون مقایسه وارد کنید. برای فروشگاهی با پردازش‌های سنگین، ابتدا سهم برنامه و دیتابیس را مشخص کنید. در هر دو حالت، نتیجهٔ اندازه‌گیری باید انتخاب را تأیید کند؛ تعداد بازدید ماهانه به‌تنهایی ظرفیت لازم را مشخص نمی‌کند.

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

تفاوت Nginx و Apache در تحویل فایل ثابت و اجرای PHP با PHP-FPM
تفاوت Nginx و Apache در تحویل فایل ثابت و اجرای PHP با PHP-FPM

پیش از تغییر، عملکرد و سازگاری را با یک آزمون بسنجید

یک نسخهٔ آزمایشی از همان سایت با منابع و داده‌های قابل مقایسه آماده کنید. نسخهٔ PHP، وضعیت کش، تنظیمات فشرده‌سازی و شرایط شبکه را ثبت کنید. اگر یکی از گزینه‌ها کش صفحه دارد و دیگری ندارد، نتیجه را فقط به وب‌سرور نسبت ندهید.

در محیط مجاز، فایل ثابت، صفحهٔ عمومی و عملیات پویا را جدا آزمایش کنید. زمان پاسخ، نرخ خطا، مصرف CPU و حافظه و صف اجرای PHP را در بار مشابه ثبت کنید. چند اجرای تکرارشونده داشته باشید و فقط میانگین را نبینید؛ پاسخ‌های کندتر هم روی تجربهٔ کاربران اثر دارند. آزمون سنگین را بدون برنامه روی سایت فعال اجرا نکنید.

پیش از انتقال نهایی، این موارد را کنترل کنید:

  • پیوندهای یکتا، تغییر مسیرهای قدیمی و صفحهٔ خطای درست؛
  • ورود کاربر، ارسال فرم، بارگذاری فایل و خرید آزمایشی؛
  • HTTPS و تشخیص صحیح آن پشت پروکسی؛
  • قواعد دسترسی، فایل‌های خصوصی و محدودیت اجرای کد در پوشهٔ بارگذاری؛
  • استثناهای کش برای پاسخ‌های شخصی و محتوای تازه؛
  • گزارش خطا، نسخهٔ پشتیبان تنظیمات و روش بازگشت.

آزمون صحت تنظیمات، فقط مرحلهٔ اول است؛ موفقیت آن به معنای سالم‌بودن مسیر خرید یا اعمال تمام محدودیت‌ها نیست. تغییر را ابتدا در محیط آزمایشی انجام دهید و برای اعمال نهایی، مسئول، زمان و معیار برگشت مشخص داشته باشید.

اگر پروژه به کنترل سیستم‌عامل و تنظیم وب‌سرور نیاز دارد، سرور ابری ابر آراد را برای بررسی منابع و مدل اجرا ببینید. نیاز برنامه، مسئول نگهداری و هزینهٔ پشتیبانی را پیش از سفارش مشخص کنید و پلن‌های پشتیبانی را بررسی کنید. انتخاب VPS به‌تنهایی به معنای نصب آماده یا مدیریت Nginx و Apache نیست؛ دامنهٔ خدمات را با نیاز پروژه تطبیق دهید.

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

از صفحه تماس ابر آراد، مسیر ارتباط با تیم را انتخاب کنید.

گفت‌وگو با تیم آراد
به انتهای این مقاله رسیدید. مسیر یادگیری را با مقاله‌های دیگر ادامه دهید.
گفت‌وگو درباره این مقاله

دیدگاه‌ها و پرسش‌های شما

تجربه یا پرسش خود را درباره موضوع مقاله با ما در میان بگذارید.

هنوز دیدگاهی ثبت نشده است؛ شما گفت‌وگو را شروع کنید.

دیدگاه خود را بنویسید

نشانی ایمیل شما نمایش داده نمی‌شود. فیلدهای ستاره‌دار الزامی هستند.