لنفسك يخصص أو يهيئ وكلاء Nginx لـ Apache Tomcat على Ubuntu في 5 دقائق مع https وجدار الحماية



لست مسؤولاً ، لكن في بعض الأحيان توجد مهام أسهل (وأكثر إثارة للاهتمام) لحل نفسي من تفويض لشخص ما.

في بعض الأحيان ، نحتاج إلى "رفع" حاوية servlet (غالبًا Apache Tomcat) وتكوين الوكلاء لذلك ، إنهاء ssl (أو ببساطة https) وتغطية كل ذلك بجدار حماية (مع ترك ssh و http / https للخارج فقط).

لقد حدث أنني في الأسبوع الماضي قمت بحل هذه المشكلة ثلاث مرات (كما أصبحت النجوم ، وقبل ذلك - قبل عامين) وتحولت هذه التجربة إلى هذا التأليف الصغير.

لذلك ، نظرًا لخادم Ubuntu 18.04 أو 16.04 (على الأرجح لن تواجه مشكلات مع الإصدارات السابقة 14.04 أو نحو ذلك). إذا لم يكن لديك خادم Ubuntu ، فيمكنك "استلامه" بسرعة ، على سبيل المثال ، إلى المحيط الرقمي (رابط الإحالة الخاص بي). بعد كتابة المقالة ، لاحظت أن DO للحسابات الجديدة تمنح 100 دولار لمدة 60 يومًا للمحاولة ، إذا أشرت إلى قرض.

DNS


للحصول على مخطط بسيط للحصول على شهادة https مجانية من Let's Encrypt ، نحتاج إلى الوصول إلى خادم DNS. نكتب فيه عنوان IP لخادم أوبونتو الخاص بنا مع الاسم ، على سبيل المثال ، xyz. دعنا نقول ، بالتأكيد ، أن لديك mydomain.com ، أي سيكون اسم DNS لخادمنا هو xyz.mydomain.com

التثبيت


تثبيت Apache Tomcat (سأستخدم الإصدار 8)

apt install tomcat8 

والآن Nginx

 apt install nginx-core 

التخصيص


Nginx


تكوين Nginx المسجلة مسبقًا في اسم خادم DNS (ملف / etc / nginx / مواقع متاحة / افتراضي )

 server_name xyz.mydomain.com; 

نحن نسجل الرابط إلى Apache Tomcat المثبّتة (إذا لم تقم بتغيير أي شيء ، فسيكون "حيًا" على المنفذ 8080). نحن بحاجة إلى إضافة كتلة upstream إلى كتلة الخادم .

 upstream tomcat { server 127.0.0.1:8080 fail_timeout=0; } server { ... 

قم بإجراء تغييرات على كتلة الموقع وإعادة توجيه كل حركة المرور إلى Apache Tomcat

 server { ... location / { # try_files $uri $uri/ =404; include proxy_params; proxy_pass http://tomcat/; } 

نتحقق من أن كل شيء تم إدخاله بشكل صحيح

 service nginx configtest 

وإعادة تشغيل إنجن إكس

 service nginx restart 

اباتشي tomcat


من حيث المبدأ ، يعد هذا الجزء اختياريًا ، وإذا لم يكن من المهم بالنسبة لك عناوين IP الحقيقية والمنافذ والنظام الذي يأتي من أجله الطلب (أتحدث عن https) والخادم المطلوب إرساله إلى tomcat ، فيمكن حذف هذه الخطوة. ومع ذلك ، في بعض الحالات ، تكون هذه الخطوة مطلوبة (على سبيل المثال ، لتكنولوجيا Java Web Start aka JNLP).

أضف إلى ملف /etc/tomcat8/server.xml في كتلة <المضيف /> .

 <Host> ... <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" remoteIpProxiesHeader="x-forwarded-by" protocolHeader="x-forwarded-proto" /> </Host> 

أعد تشغيل tomcat

 service tomcat8 restart 

شهادة المتشعب


سوف تساعدنا شهادة https مع التحقق عبر http في الحصول على روبوت certbot ، أو بالأحرى تعديله لـ nginx'a - python-certbot-nginx

على أوبونتو 18.04 ، لتثبيت certbot ، مجرد تشغيل

 apt install python-certbot-nginx 

بالنسبة إلى Ubuntu 16.04 - يتعين عليك العبث بإضافة مستودعات ، وما إلى ذلك (انظر الدليل التفصيلي للرابط ).

نطلق

 certbot --nginx 

في هذه العملية ، حدد بريدك الإلكتروني ، وقبول اتفاقية الترخيص ، ولا تسمح لنا "بتدفق" بياناتنا باستخدام Let's Encrypt ، وتأكيد اسم DNS الذي سيتم إصدار الشهادة إليه ، وتوافق على أن الروبوت نفسه سوف "يهيئ" nginx.

فويلا :)

في حالة وجودها ، نتحقق من أن تجديد الشهادة سيمر دون مشاكل (تصدر الشهادة لمدة 90 يومًا وبعد ذلك يمكن تمديدها إلى أجل غير مسمى لنفس الفترة).

 certbot renew --dry-run 

وبالنسبة للجنون العظمة الداخلي ، نتحقق من وجود ملف cron في مكانه

 ls -al /etc/cron.d/certbot 

جدار الحماية


نتوقف ونعمل نسخة احتياطية (لقطة) من الجهاز الظاهري.

 ufw allow ssh ufw allow http ufw allow https ufw default allow outgoing ufw default deny incoming ufw show added 

نصلي!
 ufw enable ufw status 

نحن نتحقق من أن كل شيء تم تنفيذه - يمكن الوصول إلى الموقع عبر https ، تتم إعادة توجيه حركة مرور http ، ويتم إغلاق المنافذ الأخرى بخلاف تلك المذكورة أعلاه و ssh بشكل آمن.

ملحوظة: آمل بإخلاص أن يكون هذا النص مفيدًا لشخص ما وسأكون سعيدًا بالنقد البناء.

PPS أو ربما يخبرني ALL المعروف عن استبدال certbot لنظام التشغيل Windows؟ تحتاج إلى الحصول على الشهادة الأولية (من الناحية المثالية ، تحديثها وفقًا للجدول الزمني ، أو بشكل عام التألق الأنيق) قمت بتهيئة nginx بنفسي. نعم ، أفهم أنه من المحتمل أن تتمكن من استخدام الأداة لتشفير + IIS واستخدامها في البرنامج النصي الخاص بي ، ولكن فجأة هناك "مثالي" جاهز؟

Source: https://habr.com/ru/post/ar434010/


All Articles