وب‌سرور آپاچی
Apache HTTP Server ، که به زبان عام آپاچی نامیده می شود ، یک نرم افزار سرور وب چند پلتفرم رایگان و منبع باز است و تحت لیسانس Apache License 2.0 منتشر شده است. Apache توسط جامعه ای آزاد از توسعه دهندگان تحت حمایت بنیاد نرم افزار Apache توسعه و نگهداری می شود.
اکثریت قریب به اتفاق نمونه های سرور Apache HTTP بر روی سیستم عامل لینوکس اجرا می شوند ، اما نسخه های فعلی نیز بر روی ویندوز ، OpenVMS و طیف گسترده ای از سیستم های مشابه یونیکس اجرا می شوند. نسخه های گذشته همچنین در NetWare ، OS / 2 و سایر سیستم عامل ها ، از جمله درگاه های اصلی اجرا می شدند.
در ابتدا توسعه آپاچی در اوایل سال 1995 بر اساس سرور NCSA httpd ، پس از متوقف شدن کار بر روی کد NCSA آغاز شد. آپاچی نقشی اساسی در رشد اولیه شبکه جهانی وب داشت ، به سرعت از NCSA httpd به عنوان سرور HTTP غالب پیشی گرفت. در سال 2009 ، آپاچی اولین نرم افزار وب سرور بود که بیش از 100 میلیون وب سایت را سرو می کرد. از ژانویه 2021 ، Netcraft تخمین زده است که آپاچی 24.63٪ از میلیون وب سایت شلوغ را سرویس دهی می کند ، در حالی که Nginx 23.21٪ را سرویس می دهد و مایکروسافت با 6.85٪ در مکان سوم است (برای برخی دیگر از آمار Netcraft Nginx از Apache جلوتر است) ، در حالی که طبق آمار W3Techs ، آپاچی با 35.0٪ و Nginx با 33.0٪ دوم و Cloudflare Server با 17.3٪ سوم است.
نام این نرم افزار طبق اعلام بنیاد نرم افزار آپاچی " از روی احترام به ملت های مختلف بومی آمریکا که در مجموع با نام Apache شناخته می شوند ، انتخاب شد. این نامگذاری به دلیل مهارت های کم نظیر در استراتژی جنگ و استقامت پایان ناپذیر شناخته شده است." اما بنظر می آید که این نام همچنین در یک وب سرور تکه تکه - یک سرور ساخته شده از یک سری وصله ها (patches) یک جناس زیبا ایجاد می کند.
منابع دیگری نیز برای نظریه , وجود جناس بین نام نرم افزار و عملکرد آن در عمل وجود دارد ، از جمله اسناد رسمی پروژه در سال 1995 ، که اظهار داشت: "Apache یک نام زیبا است که جا افتاده است. این بر اساس برخی از کد موجود و یک سری از وصله های نرم افزار بود ، سرور "کوچک".
اما در یک مصاحبه در آوریل 2000 ، برایان بهلندورف ، یکی از خالقان آپاچی ، ادعا کرد که ریشه های آپاچی یک جناس نیست ، و اظهار داشت:
این اسم به معنای واقعی کلمه از ناکجاآباد بیرون آمده است. ای کاش می توانستم بگویم که این چیز خارق العاده ای بود ، اما واقعا از هیچ بدست آمده است. من آن را در یک صفحه نوشتم و بعد از چند ماه که این پروژه شروع شد ، مردم را به سمت این صفحه هدایت کردم و گفتم: "سلام ، نظر شما در مورد این ایده چیست؟"… شخصی گفت که آنها از این نام خوششان می آید و این یک واقعاً جناس خوب و من مثل این بودم: "جناس؟ منظورت چیست؟" او گفت ، "خوب ، ما در حال ساخت یک سرور از روی چند وصله نرم افزاری(patch) هستیم ، درست است؟ بنابراین این یک وب سرور تکه تکه
(patchy) است." من رفتم ، "آه ، خوب." … وقتی به اسم فکر کردم ، نه. این فقط به نوعی دلالت داشت: "هیچ زندانی ای را نگیرید. نوعی پرخاشگر باشید و لگد در کون بقیه بزنید"
هنگامی که آپاچی تحت یونیکس در حال اجرا است ، نام فرآیند آن httpd است که مخفف "HTTP daemon" است.
Apache از انواع ویژگی ها پشتیبانی می کند ، بسیاری از آنها به عنوان ماژول های کامپایل شده که عملکرد اصلی را گسترش می دهند ، اجرا می شوند. این موارد می توانند از طرح های تأیید اعتبار تا پشتیبانی از زبان های برنامه نویسی سمت سرور مانند Perl ، Python ، Tcl و PHP باشند. ماژول های احراز هویت محبوب شامل mod _ access، mod _ auth، mod _ digest، mod _ auth _digest، هستند. نمونه ای از ویژگی های دیگر شامل Secure Sockets Layer و Transport Layer Security Security (mod _ ssl) ، یک ماژول پروکسی (mod _proxy) ، یک ماژول بازنویسی URL به نام (mod _ rewrite) پرونده های ثبت سفارشی (mod _ log _ config) ، و پشتیبانی از فیلتر (mod _ include و mod _ ext _ filter).
روشهای فشرده سازی رایج در Apache شامل ماژول الحاقی mod _ gzip است که برای کمک به کاهش حجم (وزن) صفحات وب ارائه شده از طریق HTTP پیاده سازی شده است. ModSecurity یک موتور تشخیص و جلوگیری از نفوذ منبع باز برای برنامه های وب است. گزارش های Apache را می توان از طریق مرورگر وب با استفاده از اسکریپت های رایگان مانند AWStats / W3Perl یا Visitors تجزیه و تحلیل کرد.
میزبانی مجازی اجازه می دهد تا یک نصب مستقل Apache به وب سایت های مختلف خدمات ارائه دهد. به عنوان مثال ، یک کامپیوتر با یک نصب Apache می تواند به طور همزمان example.com ، example.org ، test47.test-server.example.edu و غیره را ارایه کند.
Apache دارای پیغامهای خطای قابل تنظیم ، پایگاه داده احراز هویت مبتنی بر دیتابیس و مذاکره در مورد محتوا است و از چندین رابط کاربر گرافیکی (GUI) پشتیبانی می کند.
از احراز هویت رمز عبور و احراز هویت گواهی دیجیتال پشتیبانی می کند. از آنجا که کد منبع آزادانه در دسترس است ، هر کسی می تواند سرور را برای نیازهای خاص وفق دهد و یک کتابخانه عمومی بزرگ از add-on های apache وجود دارد.
لیست دقیق تری از ویژگی ها در زیر ارائه شده است:به جای پیاده سازی یک معماری واحد ، آپاچی انواع مختلفی از ماژول های چندرشته ای ( MultiProcessing Modules یاMPM) را فراهم می کند ، که به آن امکان می دهد در هر دو حالت مبتنی بر فرآیند و ترکیبی (فرآیند و رشته) یا رویداد - رشته ترکیبی اجرا شود تا مطابقت بهتر با خواسته های هر زیرساختی را داشته باشد. بنابراین انتخاب MPM و پیکربندی مهم است. در مواردی که باید در عملکرد سازش انجام شود ، Apache برای کاهش تأخیر و افزایش توان تولید نسبت به رسیدگی تا به درخواستهای بیشتری بتواند رسیدگی کند. بنابراین از پردازش مداوم و قابل اعتماد درخواست ها در بازه های زمانی مناسب اطمینان حاصل می کند.
برای تحویل صفحات ساکن ، سری Apache 2.2 به مراتب کندتر از nginx و varnish در نظر گرفته شد. برای حل این مسئله ، توسعه دهندگان Apache Event MPM را ایجاد کردند که استفاده از چندین فرآیند و چندین رشته در هر فرآیند را در یک حلقه مبتنی بر رویداد ناهمزمان مخلوط می کند. این معماری همانطور که در سری Apache 2.4 پیاده سازی شده است ، طبق گفته جیم جاگیلسکی و سایر منابع مستقل ، حداقل به عنوان سرورهای وب مبتنی بر رویداد عمل می کند. با این حال ، برخی از معیارهای مستقل اما به طور قابل توجهی منسوخ نشان می دهند که به عنوان مثال سرعت آن هنوز نیمی از nginx است.
پروژه سرور Apache HTTP یک تلاش مشترک توسعه نرم افزار با هدف ایجاد یک کد منبع قدرتمند ، دارای درجه تجاری ، دارای ویژگی و آزاد در دسترس از یک سرور HTTP (وب) است. این پروژه به طور مشترک توسط گروهی از داوطلبان مستقر در سراسر جهان و با استفاده از اینترنت و وب برای برقراری ارتباط ، برنامه ریزی و توسعه سرور و مستندات مربوط به آن ، مدیریت می شود. این پروژه بخشی از بنیاد نرم افزار Apache است. علاوه بر این ، صدها کاربر به کمک ایده ، کد و مستندات پروژه را گسترش داده اند.
Apache 2.4 پشتیبانی از سیستم عامل های BeOS ، TPF ، A / UX ، NeXT و Tandem را قطع کرد.
پایگاه کد Apache HTTP Server در ژانویه 2004 مجدداً از مجوز Apache 2.0 (از مجوز قبلی 1.1) مجوز گرفت و Apache HTTP 1.3.31 Server و 2.0.49 اولین نسخه هایی بودند که از مجوز جدید استفاده کردند.
پروژه OpenBSD این تغییر را دوست نداشت و استفاده از نسخه های قبل از 2.0 Apache را ادامه داد و به طور موثر Apache 1.3 را استفاده کرد. آنها در ابتدا آن را با Nginx جایگزین کردند و پس از مدت کوتاهی ، OpenBSD Httpd را به عنوان جایگزین جدید خود انتخاب کردند.
نسخه 1.1: مجوز Apache 1.1 توسط ASF در سال 2000 تأیید شد: تغییر اصلی مجوز 1.0 در "بند تبلیغات" است (بخش 3 مجوز 1.0). محصولات مشتق شده دیگر نیازی به درج اسناد در مواد تبلیغاتی خود ندارند ، فقط در مستندات باید درج شوند.
نسخه 2.0: ASF مجوز Apache 2.0 را در ژانویه 2004 تصویب کرد. اهداف اعلام شده این مجوز شامل سهولت استفاده از پروانه برای پروژه های غیر ASF ، بهبود سازگاری با نرم افزارهای مبتنی بر GPL ، اجازه دادن به مجوز به جای ذکر شده در هر پرونده ، روشن کردن مجوز برای مشارکت ها و الزام مجوز ثبت اختراع در مورد مشارکت هایی که لزوماً حق ثبت اختراعات خود را نقض می کند.
Apache مانند سایر نرم افزارهای سرور قابل هک و سواستفاده است. اصلی ترین ابزار حمله Slowloris Apache است که از یک اشکال در نرم افزار Apache بهره می برد.slowris سوکت ها را ایجاد می کند و با ارسال چندین بایت (معروف به "keep-alive headers") هرکدام را زنده و مشغول نگه می دارد تا به سرور بفهماند که رایانه هنوز متصل است و مشکلی در شبکه ندارد. توسعه دهندگان Apache برای محدود کردن آسیب های وارد شده با چندین ماژول به Slowloris پرداخته اند. ماژول های mod_limitipconn, mod_qos, mod_evasive, mod security, mod_noloris,mod_antiloris همه به عنوان وسیله ای برای کاهش احتمال حمله موفقیت آمیز Slowloris پیشنهاد شده اند. از زمان آپاچی 2.2.15 ، آپاچی ماژول mod _ reqtimeout را به عنوان راه حل رسمی پشتیبانی شده توسط توسعه دهندگان ارسال می کند.