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

أولا ما هو إنجن إكس (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
وبهذا سيتم تجديد الشهادة تلقائيا قبل موعد انتهائها







