وب‌سرور آپاچی

بندانگشتی|وب‌سرور آپاچی
**وب‌سرور آپاچی** (Apache HTTP Server) یک نرم‌افزار سرور وب چندسکویی آزاد و منبع‌باز است و تحت لیسانس Apache License 2.0 منتشر شده‌است. آپاچی توسط جامعه‌ای آزاد از توسعه‌دهندگان تحت حمایت بنیاد نرم‌افزار آپاچی توسعه و نگهداری می‌شود.

اکثریت قریب به اتفاق نمونه‌های سرور Apache HTTP بر روی سیستم عامل لینوکس اجرا می‌شوند، اما نسخه‌های فعلی نیز بر روی ویندوز، OpenVMS و طیف گسترده‌ای از سیستم‌های مشابه یونیکس اجرا می‌شوند. نسخه‌های گذشته همچنین در NetWare , OS / 2 و سایر سیستم عامل‌ها، از جمله درگاه‌های اصلی اجرا می‌شدند.

در ابتدا توسعهٔ آپاچی در اوایل سال ۱۹۹۵ بر اساس سرور NCSA httpd، پس از متوقف شدن کار بر روی کد NCSA آغاز شد. آپاچی نقشی اساسی در رشد اولیهٔ شبکهٔ جهانی وب داشت، به سرعت از NC8SA httpd به عنوان سرور HTTP غالب پیشی گرفت. در سال ۲۰۰۹، آپاچی اولین نرم‌افزار وب‌سرور بود که بیش از ۱۰۰ میلیون وب‌سایت را سرو می‌کرد. تا ژانویهٔ ۲۰۲۱، نت‌کرفت تخمین زده‌است که آپاچی ۲۴٫۶۳٪ از میلیون وب‌سایت شلوغ را سرویس‌دهی می‌کند، در حالی که Nginx معادل ۲۳٫۲۱٪ را سرویس می‌دهد و مایکروسافت با ۶٫۸۵٪ در مکان سوم است (برای برخی دیگر از آمار Netcraft Nginx از آپاچی جلوتر است)، در حالی که طبق آمار W3Techs، آپاچی با ۳۵٫۰٪ و انجین‌اکس با ۳۳٫۰٪ دوم و کلودفلر سرور با ۱۷٫۳٪ سوم است.

## نام
نام این نرم‌افزار طبق اعلام بنیاد نرم‌افزار آپاچی «از روی احترام به ملت‌های مختلف بومی آمریکا که در مجموع با نام آپاچی شناخته می‌شوند ، انتخاب شد. این نام‌گذاری به دلیل مهارت‌های کم‌نظیر در استراتژی جنگ و استقامت پایان‌ناپذیر شناخته شده‌است.» اما به‌نظر می‌آید که این نام همچنین در یک وب‌سرور تکه‌تکه - یک سرور ساخته شده از یک سری وصله‌ها (Patches) یک جناس زیبا ایجاد می‌کند.

منابع دیگری نیز برای نظریه، وجود جناس بین نام نرم‌افزار و عملکرد آن در عمل وجود دارد، از جمله اسناد رسمی پروژه در سال ۱۹۹۵، که اظهار داشت: "آپاچی یک نام زیبا است که جا افتاده‌است. این بر اساس برخی از کد موجود و یک سری از وصله‌های نرم‌افزار بود، سرور "کوچک".

(“ A patchy sever”)

اما در یک مصاحبه در آوریل ۲۰۰۰، برایان بهلندورف، یکی از خالقان آپاچی، ادعا کرد که ریشه‌های آپاچی یک جناس نیست، و اظهار داشت:

این اسم به معنای واقعی کلمه از ناکجاآباد بیرون آمده‌است. ای کاش می‌توانستم بگویم که این چیز خارق‌العاده‌ای بود، اما واقعاً از هیچ به‌دست آمده‌است. من آن را در یک صفحه نوشتم و بعد از چند ماه که این پروژه شروع شد، مردم را به سمت این صفحه هدایت کردم و گفتم: "سلام، نظر شما در مورد این ایده چیست؟"… شخصی گفت که آنها از این نام خوششان می‌آید و این یک واقعاً جناس خوب و من مثل این بودم: "جناس؟ منظورت چیست؟" او گفت، "خوب، ما در حال ساخت یک سرور از روی چند وصلهٔ نرم‌افزاری (Patch) هستیم، درست است؟ بنابراین این یک وب سرور تکه‌تکه (Patchy) است." من رفتم، "آه، خوب." … وقتی به اسم فکر کردم، نه. این فقط به نوعی دلالت داشت: "هیچ زندانی ای را نگیرید. نوعی پرخاشگر باشید و لگد در کون بقیه بزنید"

هنگامی که آپاچی تحت یونیکس در حال اجرا است، نام فرایند آن httpd است که مخفف "HTTP daemon" است.

## مرور ویژگی‌ها
آپاچی از انواع ویژگی‌ها پشتیبانی می‌کند، بسیاری از آن‌ها به عنوان ماژول‌های کامپایل شده که عملکرد اصلی را گسترش می‌دهند، اجرا می‌شوند. این موارد می‌توانند از طرح‌های تأیید اعتبار تا پشتیبانی از زبان‌های برنامه‌نویسی سمت سرور مانند 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).

روش‌های فشردهسازی رایج در آپاچی شامل ماژول الحاقی mod _ gzip است که برای کمک به کاهش حجم (وزن) صفحات وب ارائه شده از طریق HTTP پیاده‌سازی شده‌است. ModSecurity یک موتور تشخیص و جلوگیری از نفوذ منبع باز برای برنامه‌های وب است. گزارش‌های آپاچی را می‌توان از طریق مرورگر وب با استفاده از اسکریپت‌های رایگان مانند AWStats / W3Perl یا Visitors تجزیه و تحلیل کرد.

میزبانی مجازی اجازه می‌دهد تا یک نصب مستقل

۱۱ض آپاچی به وب‌سایت‌های مختلف خدمات ارائه دهد. به عنوان مثال، یک کامپیوتر با یک نصب آپاچی می‌تواند به‌طور همزمان example.com , example.org , test47.test-server.example.edu و غیره را ارایه کند.

آپاچی دارای پیغام‌های خطای قابل تنظیم، پایگاه دادهٔ احراز هویت مبتنی بر دیتابیس و مذاکره در مورد محتوا است و از چندین رابط کاربر گرافیکی (GUI) پشتیبانی می‌کند.

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

فهرست دقیق‌تری از ویژگی‌ها در زیر ارائه شده‌است:
* ماژول‌های پویای قابل بارگیری
* حالت‌های پردازش درخواست چندگانه (MPM) شامل Event-based / Async , Threaded و Prefork.
* بسیار مقیاس‌پذیر (به راحتی بیش از ۱۰۰۰۰ اتصال همزمان را کنترل می‌کند)
* مدیریت فایل‌های ساکن، پرونده‌های فهرست، نمایه‌سازی خودکار و مذاکره در مورد محتوا
* . htaccess per - پشتیبانی از پیکربندی دایرکتوری
* پروکسی معکوس با حافظهٔ پنهان
* توازن بار با بررسی‌های سلامت درون باند
* مکانیسم‌های متعادل‌کنندهٔ بار چندگانه
* تحمل خطا و Failover با بازیابی خودکار
* WebSocket , FastCGI , SCGI , AJP و uWSGI با caching پشتیبانی می‌کنند
* پیکربندی پویا
* TLS / SSL با پشتیبانی منگنه SNI و OCSP، از طریق OpenSSL یا wolfSSL.
* سرورهای مجازی مبتنی بر نام و آدرس IP
* IPv6 - سازگار است
* پشتیبانی از HTTP / 2
* تأیید اعتبار دقیق و کنترل دسترسی مجوز
* فشرده‌سازی و فشرده‌سازی gzip
* بازنویسی URL
* بازنویسی سرصفحه‌ها و محتوا
* ورود به سیستم سفارشی با چرخش
* محدود کردن اتصال همزمان
* درخواست محدود کردن نرخ پردازش
* پهنای باند گاز
* سمت سرور شامل می‌شود
* مکان جغرافیایی مبتنی بر آدرس IP
* ردیابی کاربر و جلسه
* WebDAV
* برنامه‌نویسی Perl , PHP و Lua جاسازی شده
* پشتیبانی CGI
* _ _ HTML در هر صفحه - وب کاربر -
* تجزیه کننده بیان عمومی
* نمایش وضعیت در زمان واقعی
* پشتیبانی از FTP (توسط یک ماژول جداگانه)

## عملکرد
به جای پیاده‌سازی یک معماری واحد، آپاچی انواع مختلفی از ماژول‌های چندرشته ای (MultiProcessing Modules یا MPM) را فراهم می‌کند، که به آن امکان می‌دهد در هر دو حالت مبتنی بر فرایند و ترکیبی (فرایند و رشته) یا رویداد - رشته ترکیبی اجرا شود تا مطابقت بهتر با خواسته‌های هر زیرساختی را داشته باشد؛ بنابراین انتخاب MPM و پیکربندی مهم است. در مواردی که باید در عملکرد سازش انجام شود، آپاچی برای کاهش تأخیر و افزایش توان تولید نسبت به رسیدگی تا به درخواست‌های بیشتری بتواند رسیدگی کند؛ بنابراین از پردازش مداوم و قابل اعتماد درخواست‌ها در بازه‌های زمانی مناسب اطمینان حاصل می‌کند.

برای تحویل صفحات ساکن، سری 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 در ژانویه ۲۰۰۴ مجدداً از مجوز Apache 2.0 (از مجوز قبلی ۱٫۱) مجوز گرفت و Apache HTTP 1.3.31 Server و ۲٫۰٫۴۹ اولین نسخه‌هایی بودند که از مجوز جدید استفاده کردند.

پروژه OpenBSD این تغییر را دوست نداشت و استفاده از نسخه‌های قبل از 2.0 Apache را ادامه داد و به‌طور مؤثر Apache 1.3 را استفاده کرد. آنها در ابتدا آن را با Nginx جایگزین کردند و پس از مدت کوتاهی، OpenBSD Httpd را به عنوان جایگزین جدید خود انتخاب کردند.

#### نسخه‌ها
نسخه ۱٫۱: مجوز Apache 1.1 توسط ASF در سال ۲۰۰۰ تأیید شد: تغییر اصلی مجوز ۱٫۰ در «بند تبلیغات» است (بخش ۳ مجوز ۱٫۰). محصولات مشتق شده دیگر نیازی به درج اسناد در مواد تبلیغاتی خود ندارند، فقط در مستندات باید درج شوند.

نسخه 2.0: ASF مجوز Apache 2.0 را در ژانویه ۲۰۰۴ تصویب کرد. اهداف اعلام شده این مجوز شامل سهولت استفاده از پروانه برای پروژه‌های غیر ASF، بهبود سازگاری با نرم‌افزارهای مبتنی بر GPL، اجازه دادن به مجوز به جای ذکر شده در هر پرونده، روشن کردن مجوز برای مشارکت‌ها و الزام مجوز ثبت اختراع در مورد مشارکت‌هایی که لزوماً حق ثبت اختراعات خود را نقض می‌کند.

## امنیت
آپاچی مانند سایر نرم‌افزارهای سرور قابل هک و سوءاستفاده است. اصلی‌ترین ابزار حمله Slowloris Apache است که از یک اشکال در نرم‌افزار آپاچی بهره می‌برد. slowris سوکت‌ها را ایجاد می‌کند و با ارسال چندین بایت (معروف به "keep-alive headers") هرکدام را زنده و مشغول نگه می‌دارد تا به سرور بفهماند که رایانه هنوز متصل است و مشکلی در شبکه ندارد. توسعه‌دهندگان آپاچی برای محدود کردن آسیب‌های وارد شده با چندین ماژول به Slowloris پرداخته‌اند. ماژول‌های mod_limitipconn, mod_qos, mod_evasive, mod security, mod_noloris,mod_antiloris همه به عنوان وسیله‌ای برای کاهش احتمال حملهٔ موفقیت‌آمیز Slowloris پیشنهاد شده‌اند. از زمان آپاچی ۲٫۲٫۱۵، آپاچی ماژول mod _ reqtimeout را به عنوان راه حل رسمی پشتیبانی شده توسط توسعه دهندگان ارسال می‌کند.

#### 
----

##### ویژگی‌های مثبت وب‌سرور آپاچی
* مدیریت فایل‌های استاتیک
* ماژول‌های پویای قابل بارگیری
* نرم‌افزار آزاد و متن‌باز
* پشتیبانی از اسکریپت‌های Perl, PHP, Lua
* پشتیبانی از HTTP/2
* بازنویسی URL
* قابلیت نصب برروی انواع سیستم عامل‌ها
* بهترین گزینه برای CMSها
* نرم‌افزاری قابل اطمینان و پایدار

##### معایب وب‌سرور آپاچی
* بروز مشکل در عملکرد وب‌سایت‌های پرترافیک
* به‌روزرسانی ضروری در فواصل زمانی منظم
* آسیب‌پذیر شدن امنیت در اثر گزینه‌های پیکربندی زیاد

## منابع

## پیوند به بیرون

* http://www.apache.org
* Apache official website
* New Features in Apache 2.0
* New Features in Apache 2.2
* SVN trunk of Apache 2.x
* Netcraft Uptime Survey, a service tracking uptime of web servers
* Apache DevCenter 
* Apache Week
* Links at Open Directory Project
* Accelerating Apache Project
* URL Rewriting with mod_rewrite - using one of Apache's modules to redirect requests.
* How to mod_rewrite site powered by php script article from Mod_Rewrite Tutorials

رده:بنیاد نرم‌افزار آپاچی
رده:پراکسی معکوس
رده:سرویس‌دهنده‌های وب آزاد
رده:کارساز وب
رده:نرم‌افزارهای ۱۹۹۵ (میلادی)
رده:نرم‌افزارهای ۱۹۹۶ (میلادی)
رده:نرم‌افزارهای آزاد چندسکویی
رده:نرم‌افزارهای آزاد نوشته‌شده با سی
رده:نرم‌افزارهای چندسکویی
رده:نرم‌افزارهای منشعب‌شده
رده:نرم‌افزارهای یونیکس مرتبط با شبکه
رده:نرم‌افزارهایی که از پروانه آپاچی استفاده می‌کنند