إستخدام NGINX كبروكسي عكسي لأودو وتنصيب شهادة Letsencrypt

إستخدام NGINX كبروكسي عكسي لأودو وتنصيب شهادة Letsencrypt
شارك المحتوى

Nginx reverse proxy

أولا ما هو إنجن إكس (Nginx)

هو خادم ويب مفتوح المصدر ومجاني مثله ك أباتشي (APACHE) يمكن إستخدامه كبروكسي عكسي للعديد من الخوادم الأخرى

ثانيا ما هي شهادة Letsencrypt

هي منظمة غير ربحية تقوم بإعطاء شهادات تشفير  مجانية

عملية التثبيت

الشرح سيتم على أنظمة Debian وما بُني عليها

أولا نقوم بتثبيت انجن اكس عن طريق هذا الأمر

apt update

apt install nginx -y

ثانيا للحصول على شهادات letsencrypt سنستخدم أداة acme.sh

نقوم بتثبيتها عن طريق هذا الأمر

wget -O – https://get.acme.sh | sh

بعد الإنتهاء من هذا الأمر نقوم بغلق الطرفية وفتحها مرة أخرى

ثانيا نقوم بجلب الشهادة للدومين الخاص بنا عن طريق هذا الأمر

acme.sh –issue -d odoo.mfa0.com -w /var/www/html

مع تبديل odoo.mfa0.com بالدومين الخاص بك

واذا كنت تستخدم أوبنتو قن بتبديل المسار الى

/usr/share/nginx/www/html

بذلك نكون قد انتهينا من الجزء الخاص بتثبيت انجن اكس وأداة acme.sh

نأتي الى الجزء الاخر وهو جعل انجن اكس يعمل الى تحويل الطلبات القادمة اليه الى الاودو

نقوم بإنشاء ملف في إعدادات الانجن اكس عن طريق هذا الأمر

nano /etc/nginx/sites-available//FILENAME

ونقوم بوضع الكود الآتي مع تغير ما يلزم

 

#odoo server
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}

# http -> https
server {
listen 80;
server_name odoo.mfa0.com;
rewrite ^(.*) https://$host$1 permanent;
}

server {
listen 443 ssl;
server_name odoo.mfa0.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;

# Add Headers for odoo proxy mode
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;

# SSL parameters
#ssl on;
ssl_certificate /root/.acme.sh/odoo.mfa0.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/odoo.mfa0.com/odoo.mfa0.com.key;
ssl_session_timeout 30m;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;

# Redirect longpoll requests to odoo longpolling port
location /longpolling {
proxy_set_header Host $host;
proxy_pass http://odoochat;
}

# Redirect requests to odoo backend server
location / {
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass http://odoo;
}

# common gzip
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
}

بعد ذلك نقوم بحفظ الملف بالضغط على CTRL + X

ثم Enter

نقوم بعد ذلك بعمل إختصار للملف في المسار /etc/nginx/sites-enabled عن طريق الأمر

ln -s /etc/nginx/sites-available/FILENAME /etc/nginx/sites-enabled/

وبذلك نكون انتهينا من حفظ الملف مع مراعات تغير الأجزاء باللون الأحمر بالدومين الخاص بك

بعد ذلك نقوم بعمل اعادة إختبار للإعدادات الخاصة بانجن اكس عن طريق هذا الأمر

nginx -t

إذا ظهر لنا
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
فكل شئ سليم نقوم بعد ذلك بعمل إعادة تشغيل عن طريق الأمر

service nginx restart

بعد ذلك نقوم بالدخول إلى موقعنا عن طريق الرابط

https://odoo.mfa0.com

بدلا من http://odoo.mfa0.com:8069

سنلاحظ ظهور قفل أخضر بجانب إسم الموقع وذلك معناه أن الإتصال بهذا الموقع هو إتصال مُشفر

على الرغم من مجانية شهادات letsencrypt الا ان مدتها هي 3 شهور فقط لذلك هي تحتاج للتجديد كل 3 شهور ولذلك سنقوم بإنشاء سكربت صغير يقوم بتلك المهمه , نقوم بإنشاء ملف جديد

nano /root/sslrenew.sh

نقوم بوضع المحتوى الاتي فيه

#!/bin/sh
echo “rm config file”
rm /etc/nginx/sites-enabled/FILENAME
echo “restart nginx”
/etc/init.d/nginx restart
echo “renew”
“/root/.acme.sh”/acme.sh –renew-all
echo “cp config file”
ln -s /etc/nginx/sites-available/FILENAME /etc/nginx/sites-enabled/
echo “restart nginx”
/etc/init.d/nginx restart
exit 0

نضغط CTRL + X وبعدها Enter

نقوم بفتح الكرون عن طريق الامر التالي

crontab -e

نقوم باضافة هذا السطر

0 0 1,7,15,21 * * /bin/sh /root/sslrenew.sh

نضغط CTRL + X وبعدها Enter

وبهذا سيتم تجديد الشهادة تلقائيا قبل موعد انتهائها

مُحمد الصايغ

مدير سيرفرات ومبرمج هاوي أحب البحث

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.