خطأ نموذجي لخوادم الويب مع nginx و certbot، التي اكتشفتها مؤخرًا error.log:
محتوى
[alert] 19765#19765: *151498 could not allocate new session in SSL session shared cache "le_nginx_SSL" while SSL handshaking, client: ip.ip.ip.ip, server: 0.0.0.0:443
إنه خطأ يظهر بشكل متقطع ، فقط في سيناريوهات معينة ومعظم الوقت على مواقع الويب ذات حركة المرور العالية. عدد كبير من الاستجواب.
“le_nginx_SSL
“، كما يمكنك أن تستنتج من الاسم ، والرد على جلسات SSL المقدمة في الاستجواب. يتم خلالها فحص شهادة SSL Let's Encrypt ، وتثبيتها على الخادم بمساعدة certbot
.
لماذا يظهر خطأ nginx “لا يمكن تخصيص جلسة جديدة في ذاكرة التخزين المؤقت لمشتركة جلسة SSL “le_nginx_ssl” بينما SSL المصافحة”
يتم الاحتفاظ بجلسات Nginx SSL في ذاكرة مشتركة “يشارك” لخدمة كل استعلام في المتصفح. عندما تكون المساحة المخصصة للذاكرة المشتركة (مشتركة) SSL ممتلئة ، وفشل Nginx في إصدار مساحة لجلسة جديدة ، تظهر رسالة الخطأ هذه.
لا يتعلق الأمر خطأ ينتقد Ningx كما أنه ليس له تأثير كبير على تجربة المستخدمين. في الحقيقة “error.log” ويلاحظ مع “[alert]
“.
كيف نحل خطأ nginx “لا يمكن تخصيص جلسة جديدة في ذاكرة التخزين المؤقت لمشتركة جلسة SSL “le_nginx_ssl” بينما SSL المصافحة”
عند التثبيت certbot على خادم الويب (CentOS ، Ubuntu) ، يتم إنشاء العديد من ملفات التكوين التي من خلالها تتواصل الخدمة الجديدة المسؤولة عن شهادات SSL (Let's Encrypt) مع Nginx. أحد هذه الملفات هو و options-ssl-nginx.conf
. ملف التكوين الذي يمكننا فيه تخصيص مساحة أكبر لذاكرة مشاركة SSL أو تغيير الوقت الذي تنتهي فيه جلسة SSL ويتم حذفها تلقائيًا.
sudo nano /etc/letsencrypt/options-ssl-nginx.conf
في options-ssl-nginx.conf
يمكننا التغيير من المعلمات ، ولكن اهتمامًا كبيرًا ، لأن التغييرات هنا ستؤثر على تجديد شهادات SSL.
ssl_session_cache shared:le_nginx_SSL:10m;
ssl_session_timeout 1440m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
يمكننا التغيير طالما تم تخزين الجلسة في الذاكرة المشتركة المشتركة ل “le_nginx_ssl”. لقد خصصت 10 ميغابايت للجلسات المشتركة لـ SSL ، مع فترة 1440 دقيقة (24 ساعة).
بالنسبة للمواقع ذات حركة المرور العالية ، يوصى بزيادة ذاكرة التخزين المؤقت المشتركة ، ولكنها تحتاج إلى توازن بين حركة المرور (عدد الجلسات) وسيتم تخزين الفترة الزمنية كجلسة.
في حالتي ، عملت على تغيير القيمة في “ssl_session_cache shared:le_nginx_SSL:15m
“.