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

  

#### مزایا و معایب وب سرور آپاچی

---

##### ویژگی‌های مثبت وب سرور Apache

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

##### معایب وب سرور Apache

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

منابع
-----

1. ↑   "About the Apache HTTP Server Project". Apache Software Foundation. Archived from the original on 7 June 2008. Retrieved 2008-06-25.

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

* 
* 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 بایگانی‌شده در ۲۱ ژوئیه ۲۰۰۶ توسط Wayback Machine
* 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



| داده‌های کتابخانه‌ای ویرایش در ویکی‌داده |
| --- |
| عمومی | 
* ویاف
	+ 1
* ورلدکت (از طریق ویاف)

 |
| کتابخانه‌های ملی | 
* فرانسه (داده‌ها)
* آلمان
* جمهوری چک

 |
| سایر | 
* سوداک (فرانسه)
	+ 1

 |

| * ن
* ب
* و
بنیاد نرم‌افزار آپاچی |
| --- |
| پروژه‌های سطح بالا | 
* Abdera
* Accumulo
* ActiveMQ
* Ambari
* Ant
* Aries
* وب‌سرور آپاچی
* APR
* Avro
* اکسیس
* اکسیس۲
* Bloodhound
* Brooklyn
* Buildr
* Calcite
* Camel
* آپاچی کسندرا
* Cayenne
* Chemistry
* آپاچی کلوداستک
* Cocoon
* Continuum
* آپاچی کوردوا
* کاوچ‌دی‌بی
* CTAKES
* CXF
* Deltacloud
* Derby
* Directory
* Drill
* Empire-db
* Felix
* آپاچی فلکس
* Flink
* آپاچی فلوم
* Forrest
* Geronimo
* Gora
* Gump
* آپاچی هدوپ
* Hama
* اچ‌بیس
* Hive
* Jackrabbit
* James
* JMeter
* کافکا
* Karaf
* Kylin
* لوسین
* ماهوت
* Marmotta
* آپاچی ماون
* MINA
* mod\_perl
* MyFaces
* Nutch
* ODE
* OFBiz
* Oozie
* OpenEJB
* OpenJPA
* OpenNLP
* آپاچی اوپن‌آفیس
* PDFBox
* Phoenix
* POI
* Pig
* Pivot
* Qpid
* River
* Roller
* Samza
* ServiceMix
* Shiro
* Sling
* اسپارک
* Stanbol
* Storm
* SpamAssassin
* Sqoop
* آپاچی استراتس
* آپاچی ساب‌ورژن
* آپاچی تپستری
* آپاچی تریفت
* Tika
* Tiles
* آپاچی تامکت
* Traffic Server
* Turbine
* Tuscany
* UIMA
* Velocity
* آپاچی ویو
* Wicket
* Wink
* Xalan
* Xerces
* ZooKeeper

 | ASF logo |
| پروژه های مشترک | 
* Apache Commons Logging
* BCEL
* BSF
* Daemon
* Jelly

 |
| لوسین | 
* لوسین
* Solr

 |
| آپاچی هدوپ | 
* آپاچی هدوپ
* آپاچی هدوپ

 |
| دیگر پروژه‌ها | 
* Batik
* Chainsaw
* FOP
* Ivy
* لاگ۴جی
* لاگ۴جی
* XAP

 |
| پروژه‌های انکوباتور | 
* XAP

 |
| Apache Attic | 
* AxKit
* Beehive
* Click
* Bluesky
* Cactus
* Jakarta
* Excalibur
* هارمونی
* HiveMind
* Lenya
* Slide
* Shale
* Shindig
* stdcxx
* iBATIS
* XMLBeans

 |
| مجوزها | 
* مجوز آپاچی

 |
| 
* 

**\*** Commons
 |

| * ن
* ب
* و
رابط‌های وب |
| --- |
| سمت سرور | 

|  |  |
| --- | --- |
| پروتکلها | 
* HTTP
* CGI
* SCGI
* FCGI
* AJP
* WSRP
* وب‌سوکت

 |
| رابط برنامه‌نویسی وب | 
* C NSAPI
* C ASAPI
* C ISAPI
* COM ASP
* جاوا سرولت
	+ container
* CLI OWIN
* ASP.NET Handler
* Python WSGI
* Ruby Rack
* JavaScript JSGI
* Perl PSGI
* Lua WSAPI
* Portlet

 |
| Apache modules | 
* mod\_jk
* mod\_lisp
* mod\_mono
* mod\_parrot
* mod\_perl
* mod\_php
* mod\_proxy
* mod\_python
* mod\_wsgi
* mod\_ruby
* Phusion Passenger

 |
| موضوعات | 
* منبع وب در برابر خدمات وب
* Open API
* Webhook
* سرور کاربردی
	+ comparison
* اسکریپت‌نویسی

 |

 |
| سمت کاربر | 

|  |  |
| --- | --- |
| رابط‌های مرورگر | 
* C NPAPI
	+ LiveConnect
	+ XPConnect
* C NPRuntime
* C PPAPI
	+ NaCl
* اکتیوایکس
* BHO
* XBAP

 |
| رابطه برنامه‌نویسی وب | 

|  |  |
| --- | --- |
| W3C | 
* Audio
* کانواس
* CORS
* DOM
* DOM events
* EME
* File
* Geolocation
* IndexedDB
* MSE
* SSE
* SVG
* Video
* وب‌آرتی‌سی
* وب‌سوکت
* Web Messaging
* Web storage
* Web worker
* XMLHttpRequest
* وب‌اسمبلی

 |
| Khronos | 
* WebCL
* وب‌جی‌ال

 |
| دیگر | 
* Gears
* Web SQL Database (پیشتر با نام W3C)
* WebUSB

 |

 |
| موضوعات | 
* ایجکس در برابر اچ‌تی‌ام‌ال پویا
* Mashup
* Web IDL
* اسکریپت‌نویسی

 |

 |
| شرکتهای خدمات وب | 
* بهسازان هاست

 |
| موضوعات | 
* صفحه وب پویا
* Open Web Platform
* برنامه‌های غنی اینترنتی
* برنامه کاربردی وب

 |