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

از ویکی‌پدیا، دانشنامهٔ آزاد
آپاچی اچ‌تی‌تی‌پی سرور
Apache HTTP server logo (2019-present).svg
نویسنده(های)
اصلی
رابرت مک‌کول
توسعه‌دهنده(ها)بنیاد نرم‌افزار آپاچی
انتشار ابتدایی[۱] ۱۹۹۵
انتشار پایدار
۲٫۴٫۴
۲۵ فوریه ۲۰۱۳؛ ۹ سال پیش (۲۰۱۳-۰۲-۲۵)
مخزن
نوشته‌شده باسی
سیستم‌عاملچندسکویی
در دسترس بهانگلیسی
گونهوب سرور
پروانهاجازه‌نامه آپاچی نسخهٔ ۲٫۰
وبگاه

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 یک نام زیبا است که جا افتاده است. این بر اساس برخی از کد موجود و یک سری از وصله های نرم افزار بود ، سرور "کوچک".

(“ A patchy sever”)

اما در یک مصاحبه در آوریل 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 وجود دارد.

لیست دقیق تری از ویژگی ها در زیر ارائه شده است:

  • ماژول های پویا قابل بارگیری
  • حالتهای پردازش درخواست چندگانه (MPM) شامل Event-based / Async ، Threaded و Prefork.
  • بسیار مقیاس پذیر (به راحتی بیش از 10000 اتصال همزمان را کنترل می کند)
  • مدیریت فایل های ساکن ، پرونده های فهرست ، نمایه سازی خودکار و مذاکره در مورد محتوا
  • . 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 برای کاهش تأخیر و افزایش توان تولید نسبت به رسیدگی تا به درخواستهای بیشتری بتواند رسیدگی کند. بنابراین از پردازش مداوم و قابل اعتماد درخواست ها در بازه های زمانی مناسب اطمینان حاصل می کند.

برای تحویل صفحات ساکن ، سری 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 را به عنوان راه حل رسمی پشتیبانی شده توسط توسعه دهندگان ارسال می کند.

منابع[ویرایش]

  1. http://httpd.apache.org/ABOUT_APACHE.html "About the Apache HTTP Server Project". Apache Software Foundation. Archived from the original on 7 June 2008. Retrieved 2008-06-25.

پیوند به بیرون[ویرایش]