Web Server
خادم الويب
سنتعرف في هذا الدرس على خادم الويب، وتاريخه، وأنواعه، وماذا يحدث عندما يطلب المستخدم من خادم الويب زيارة موقع ويب معين، كما سنتعرف على بعض المفاهيم الأساسية لخوادم الويب، مثل: البروتوكولين HTTP، وHTTPS، والفرق بينهما، وكيفية التحقق من أمان الاتصال في المتصفح، وكيفية توليد وتثبيت شهادة SSL/TLS.
التاريخ
الدروس
المستوى
اللغة
المشاهدات
المواضيع
الشروحات chevron_left Web Server chevron_left Web Technology
Web Server
خادم الويب
</>
Web Server
خادم الويب
- يرسل المتصفح طلبًا: عندما يدخل المستخدم عنوان موقع ويب في المتصفح، يقوم المتصفح بإنشاء طلب HTTP وإرساله إلى عنوان IP المحدد للموقع.
- يستقبل الخادم الطلب: يتلقى الخادم الطلب ويحلله ليحدد الموارد المطلوبة مثل ملفات HTML، الصور، أو ملفات الفيديو.
- استجابة الخادم بالموارد: يجمع الخادم الردود المناسبة، ثم يرسلها مرة أخرى إلى المتصفح كحزمة بيانات.
- عرض الصفحة: يستقبل المتصفح البيانات ويعرضها كموقع ويب يمكن للمستخدم التفاعل معه.
</>
History of Web Servers
تاريخ خوادم الويب
يرجع تاريخ خوادم الويب إلى بداية الويب في أوائل التسعينات والبداية كانت مع مشروع الإنترنت العالمي World Wide Web الذي بدأه العالم تيم بيرنرز لي في عام 1989.
1991: تم تقديم أول خادم ويب الذي وتم تنفيذه باستخدام برنامج يسمى CERN httpd والذي يمكن القول بأنه أول برنامج خادم ويب.
1995: ظهر خادم Apache HTTP Server، والذي حصل على شعبية كبيرة بسبب كونه مفتوح المصدر، وسهل التخصيص، ويعمل بشكل جيد ومستقر.
2004: تم تقديم خادم الويب Nginx، الذي أصبح مشهورًا بفضل أدائه العالي واستهلاكه المنخفض للموارد.
دور خادم الويب في بنية الإنترنت: يعتبر خادم الويب جزءًا مهمًا من بنية الإنترنت ويعمل كحلقة وصل بين المستخدم النهائي وموارد الويب الموجودة على الخادم.
</>
Basic Concepts of Web Servers
مفاهيم أساسية لخوادم الويب
بروتوكول نقل النص الفائق [HyperText Transfer Protocol] HTTP: هو بروتوكول الاتصال الأساسي المستخدم في الويب لنقل البيانات بين المتصفح أو العميل والخادم، ويستخدم هذا البروتوكول منفذ رقم 80، وهو لا يقوم بتشفير البيانات، مما يعني أنها قد تكون معرضة للاختراق أو الكشف.
بروتوكول نقل النص الفائق الآمن [HTTPS [HyperText Transfer Protocol Secure: هو نفس بروتوكول HTTP لكن مع طبقة أمان إضافية تستخدم SSL/TLS، ويعمل على منفذ رقم 443، ويقوم بتشفير البيانات؛ مما يحميها من الاعتراض أو التعديل.
أنواع طلبات HTTP:
- GET: يُستخدم لطلب البيانات من الخادم، وتُرسل البيانات المطلوبة في عنوان URL، وهو مناسب لعمليات الجلب fetch دون تغيير النظام ويعني ذلك أن تلك البيانات يتم عرضها على جهاز المستخدم دون أن تتغير البيانات على الخادم.
- POST: يستخدم لإرسال البيانات إلى الخادم لإنشاء مورد Resource، ويستخدم عادة في عمليات الإدخال مثل إرسال النماذج أو رفع الملفات، ويتم إرسال البيانات في جسم الطلب body وليس في عنوان URL.
- PUT: يُستخدم لنقل الملفات أو البيانات إلى الخادم لتحديث مورد موجود بالفعل على الخادم أو لإنشائه ويمكن أن يقوم بإنشائه في بعض الأحيان إذا لم يكن موجودًا.
- DELETE: يُستخدم لحذف بيانات محددة من الخادم.
- HEAD: يشبه GET لكنه يعيد المعلومات الأساسية فقط دون محتوى الرد من الخادم، ويستخدم عادةً للحصول على معلومات حول البيانات دون تنزيلها.
- OPTIONS: يُستخدم للاستعلام عن قدرات الاتصال الخاصة بالخادم مثل طرق HTTP المدعومة.
مفهوم التشفير وأهميته باستخدام HTTPS: التشفير يحمي البيانات من الاعتراض أو التلاعب أثناء انتقالها بين المتصفح والخادم.
كيفية عمل HTTPS: عندما يطلب المستخدم اتصالًا عبر HTTPS يبدأ تبادل يسمى SSL Handshake بين المتصفح والخادم لضبط اتصال آمن، وخلال هذا التبادل يتم تبادل مفاتيح التشفير لإعداد قناة مشفرة.
كيفية توليد وتثبيت شهادة SSL/TLS: شهادة SSL/TLS هي أداة عبارة عن مفتاح إلكتروني يستخدم لتشفير البيانات التي تنتقل بين الخادم والمتصفح لمنع المتلصصين من فهم البيانات. ويمكن أن تكون الشهادة ذاتية التوقيع للأغراض التجريبية أو من جهة مصدقة Certificate Authority] CA].
خطوات تثبيت شهادة SSL/TLS:
- توليد زوج من المفاتيح: المفتاح العام وهو الذي يتم استخدامه في طلب توقيع الشهادة، والمفتاح الخاص الذي يتم الاحتفاظ به على الخادم ولا يتم مشاركته مع أي جهة.
- توليد طلب توقيع الشهادة Certificate Signing Request] CSR] والذي يحتوي على معلومات الموقع والخادم.
- تقديم طلب التوقيع CSR إلى جهة مصدقة CA لتقوم بإجراء فحوصات للتأكد من صحة المعلومات.
- بعد المصادقة، تقوم الجهة المصدقة بإرسال الشهادة الجاهزة ثم يتم تثبيتها على الخادم ليبدأ في تشفير البيانات بشكل آمن.
كيفية التحقق من أمان الاتصال في المتصفح:
غالبًا ما يعرض المتصفح رمز قفل بجوار عنوان URL للإشارة إلى أن الاتصال آمن ويمكن النقر على القفل لرؤية تفاصيل الشهادة والتحقق من صحة وأمان الاتصال.
http
استخدام موقع ببروتوكل http غير الآمن.
http://www.closetag.com
https
استخدام موقع ببروتوكل https الآمن.
https://www.closetag.com
ملاحظة :
- عند القيام بإرسال طلب PUT عدة مرات بنفس البيانات فستظل النتيجة كما هي بعد أول طلب، على عكس الطلب POST فسيتم إنشاء تكرار لنفس المورد إذا تم إرساله عدة مرات.
</>
Types of Web Servers
أنواع خوادم الويب
- Apache Web Server: هو أشهر خادم ويب مفتوح المصدر، ويستخدم على نطاق واسع في تقديم صفحات الويب، وهو يتميز بدعمه لعدد كبير من لغات البرمجة ومرونته في التحكم بإعداداته عبر ملفات htaccess؛ مما يجعله مناسبًا للمواقع الكبيرة.
- IIS Web Server Internet Information Services: خادم ويب مقدم من Microsoft يندمج بشكل ممتاز مع بيئة Windows، وهو يتميز بواجهة مستخدم بسيطة وسهلة وبدعمه لتقنيات ASP.NET؛ مما يجعله خيارًا جيدًا لتطبيقات الويب في المؤسسات.
- Nginx Web Server: هو خادم ويب مشهور فهو يُعرف بأدائه العالي في إدارة الموارد، ويستخدم لتقديم المحتوى الثابت بسرعة لقدرته على معالجة عدد كبير من الاتصالات المتزامنة؛ مما يجعله مثاليًا للمواقع ذات الزيارات العالية.
- Node.js: بيئة مفتوحة المصدر لتشغيل التطبيقات عبر الإنترنت وهي تتميز بوجود الكثير من الأدوات التي يمكن استخدامها بسهولة وسرعتها؛ مما يجعلها مناسبة للتطبيقات التي تحتاج إلى التفاعل الفعلي مثل الدردشة.
- LiteSpeed Web Server: يستخدم لعرض محتويات مواقع الويب الثابتة والديناميكية بسرعة وكفاءة فهو يقدم أداءً جيدًا وأمانًا عاليًا، كما أنه متوافق مع إعدادات Apache ولكنه يستهلك موارد أقل.
- Apache Tomcat: هذا الخادم موجه لتشغيل تطبيقات Java، ويدعم تشغيل Java Servlet وJSP] JavaServer Pages]؛ مما يجعله مناسبًا لتطبيقات الويب الديناميكية التي تعتمد على لغة Java.
- Lighttpd: خادم ويب خفيف الوزن وعالي الكفاءة، ويستخدم في البيئات ذات الموارد المحدودة مثل الذاكرة والمعالج، ومن أمثلة تلك البيئات: الخوادم الافتراضية الصغيرة، أو المشاريع الصغيرة التي لا تحتاج لموارد كبيرة.
- OpenLiteSpeed: هذا الخادم هو نسخة مجانية ومفتوحة المصدر من LiteSpeed وتتميز بسرعتها العالية وسهولة التحكم فيها، وهي متوافقة بدرجة كبيرة مع إعدادات Apache، وتستخدم لجعل المواقع تعمل بسرعة.
- Jigsaw Server: خادم ويب مفتوح المصدر تم تطويره بواسطة منظمة W3C وهو يستخدم للأغراض التعليمية والتجريبية ويتضمن مميزات متقدمة تساعد المطورين في تطوير واختبار مواقع الويب.
- Sun Java System Web Server: خادم ويب قامت بتطويره شركة Sun Microsystems ثم قامت شركة Oracle بالاستحواذ عليه، ويتكامل هذا الخادم بشكل جيد مع Java، ويستخدم عادةً لتشغيل تطبيقات الويب الكبيرة للمؤسسات فهو يتميز بكونه آمن جدًا ويقدم أداءً عاليًا في معالجة طلبات المستخدمين.
</>
Web Server Security
أمان خوادم الويب
"إعداد الشهادات SSL/TLS لتأمين الاتصالات: SSL/TLS هما [SSL Secure Sockets Layer] و[TLS Transport Layer Security]، وهما بروتوكولان يُستخدمان لتشفير الاتصالات بين المستخدمين وخادم الويب. الهدف الرئيسي هو تأمين البيانات المتبادلة، بحيث لا يمكن لأي طرف ثالث التجسس عليها أو تعديلها.
كيفية الحصول على شهادة SSL؟ يمكن الحصول على الشهادات من جهات رسمية مثل [Let's Encrypt] مجانًا أو من مزودي الخدمة المدفوعة مثل [Digicert] و[Comodo]. ويتم إنشاء مفتاح خاص ومفتاح عام، تُستخدم هذه المفاتيح لتشفير وفك تشفير البيانات.
تثبيت شهادة SSL/TLS على Apache: يتم تثبيت الشهادة في المجلد المناسب مثل `/etc/ssl/certs/`، وتعديل ملف الإعدادات للـ[Apache] عادةً `httpd.conf` أو `ssl.conf` ليشمل المواقع الجديدة.
التحديثات الأمنية: التحديثات تحتوي عادةً على إصلاحات للثغرات الأمنية المعروفة، وبالتالي تساعد في حمايتك من الهجمات. وتعطيل الخدمات أو البرمجيات غير المستخدمة يمكن أن يقلل من سطح الهجوم.
كيفية التحديث على نظام Linux: تحديث نظام Linux عادةً يتطلب استخدام مدير الحزم المناسب للنظام الذي تعمل عليه. على سبيل المثال: [sudo apt-get update && sudo apt-get upgrade] لنظام [Debian/Ubuntu]، و[sudo yum update] لنظام [CentOS/RHEL].
على نظام Windows: استخدام [Windows Update] لتثبيت التحديثات الأمنية الجديدة.
متابعة التحديثات الأمنية: الاشتراك في نشرات الأمن الخاصة بالبرمجيات المستخدمة، ومتابعة مواقع الأخبار الأمنية والمجتمعات التقنية.
إعداد التصاريح Permissions: حماية المجلدات والملفات باستخدام التصاريح تتضمن تعيين وتحديد الحقوق والصلاحيات مثل [القراءة، والكتابة، والتنفيذ] على المجلدات والملفات لضمان أن يبقى الوصول إليها مقتصرًا على المستخدمين المصرح لهم فقط. مما يعزز الأمان ويمنع الوصول غير المصرح به. وفي نظام [Linux] يمكن إدارة هذه التصاريح باستخدام أوامر مثل `chmod` و`chown`.
مستويات التصاريح: [القراءة Read]: السماح بقراءة الملف أو المجلد. [الكتابة Write]: السماح بالتعديل أو الحذف. [التنفيذ Execute]: السماح بتشغيل الملف أو الوصول إلى المجلد.
حماية الملفات الحساسة: نقل ملفات التكوين الحساسة خارج مجلدات الويب العامة، واستخدام جدران الحماية لمنع الوصول غير المصرح به."
Apache Settings
تعديل ملف الإعدادات للـ Apache.
<VirtualHost:443> ServerName www.example.com DocumentRoot "/var/www/html" SSLEngine on SSLCertificateFile "/path/to/certificate.crt" SSLCertificateKeyFile "/path/to/private.key" SSLCertificateChainFile "/path/to/chainfile.crt" </VirtualHost>
Linux Update
يتم هذا الأمر لتحديث خادم الويب وخادم النظام بشكل عام من خلال terminal على نظام لينكس.
sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y && sudo apt autoremove -y
</>
Web Server
خادم الويب
خادم الويب Web Server: هو جهاز كمبيوتر يستخدم لاستضافة وتقديم محتوى الويب للمستخدمين عبر الإنترنت أو عبر الشبكة الداخلية. يقوم خادم الويب بتقديم خدماته عبر بروتوكول HTTP أو HTTPS حيث يقوم بمعالجة طلبات HTTP [أو HTTPS] الواردة من العملاء [مثل المتصفحات، والتطبيقات الأخرى]، وإرسال الاستجابات المناسبة التي قد تتضمن صفحات HTML، ملفات CSS، صور، نصوص JavaScript، أو أي موارد أخرى مطلوبة.
وظائف خادم الويب:
- استقبال طلبات HTTP: يستلم طلبات HTTP الواردة من العملاء بما في ذلك الطلبات للحصول على صفحات الويب أو البيانات.
- معالجة الطلبات: يُفسر وبعالج الطلبات. قد يشمل ذلك قراءة الملفات الثابتة من نظام الملفات أو تنفيذ برامج نصية على الخادم.
- تقديم الاستجابات: يُنشئ الردود التي يتم إرسالها للعملاء، مثل صفحة HTML أو بيانات JSON أو رسائل الحالة (مثل 404 Not Found).
- التعامل مع بروتوكولات الأمان: يُدير الاتصال الآمن باستخدام HTTPS (HTTP Secure) عبر بروتوكول SSL/TLS لتشفير البيانات المتبادلة بين العميل والخادم.
- التسجيل والتشخيص: يُسجل نشاطات الطلبات وتقدم معلومات التشخيص للمسؤولين عن النظام.
كيف يعمل خادم الويب:
- العميل User-Agent: يُرسل طلب HTTP Request إلى خادم الويب.
- تحليل الطلب: يحتفظ خادم الويب بالطلب ويفحص بادئة Headers والأسلوب Method مثل GET أو POST.
- معالجة الطلب: خادم الويب يعالج الطلب مباشرة أو يقوم بتفويض الطلب الي برامج اخري موجوده علي نفس الخادم.
- إرسال الاستجابة: يُكوِّن خادم الويب استجابة HTTP Response ويرسلها إلى العميل.
- عرض البيانات: يعرض وكيل المستخدم مثل المتصفح الاستجابة للمستخدم بشكل مناسب، مثلاً عرض صفحة الويب في المتصفح.
لمزيد من المعلومات حول خادم الويب يمكنك زيارة درس خادم الويب.