From b97a1fd58735df89461bd5368b19ed747f5e187a Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sat, 8 Aug 2026 14:12:15 +0300 Subject: [PATCH] Update: 2026-08-08 14:12:15 --- docker/nginx/default.conf | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf index dce5b261..78ea7b01 100644 --- a/docker/nginx/default.conf +++ b/docker/nginx/default.conf @@ -3,6 +3,21 @@ # /v2/main/... → خادم المدفوعات # السوكيتات تُنشر مباشرة من حاوياتها (2020 / 3030) — لا تمر من هنا. +# ‏مُحلِّل أسماء دوكر المدمج. سببه عطل حقيقي دام أياماً: +# +# ‏nginx يترجم اسم الـ upstream المكتوب حرفياً في fastcgi_pass **مرة واحدة** +# ‏عند تحميل الإعدادات ثم يحتفظ بالعنوان إلى الأبد. وحين أُعيد إنشاء حاوية +# ‏php_food انتقلت من 172.24.0.9 إلى 172.24.0.10، بينما بقي nginx يطرق +# ‏العنوان القديم — فكل طلبات الطعام تردّ 502 «Connection refused» +# ‏والحاوية سليمة تماماً وسجلّها صامت لأن الطلبات لا تصلها أصلاً. تشخيصٌ +# ‏مضلِّل إلى أبعد حدّ: كل ما تفحصه يبدو صحيحاً. +# +# ‏العلاج: تمرير الوجهة عبر متغيّر. عندها يؤجّل nginx الترجمة إلى وقت +# ‏الطلب ويستعملُ هذا الـ resolver، فيلتقط أي عنوان جديد خلال 10 ثوانٍ. +# ‏فائدة ثانية: بالمتغيّر لا يسقط إقلاع nginx إذا كانت الحاوية الهدف +# ‏متوقفة — كان يرفض الإقلاع كلياً فيُسقط الموقع بأسره. +resolver 127.0.0.11 valid=10s ipv6=off; + server { listen 80; server_name _; @@ -10,6 +25,11 @@ server { index index.php index.html; client_max_body_size 25m; + # ‏وجهات fpm كمتغيّرات — انظر تعليق الـ resolver أعلاه. + set $upstream_php php:9000; + set $upstream_php_food php_food:9000; + set $upstream_php_transit php_transit:9000; + # ‏عنوان العميل الحقيقي. # ‏السلسلة هي: العميل ← nginx المضيف (CloudPanel) ← nginx الحاوية ← php-fpm، # ‏فكان REMOTE_ADDR يصل إلى PHP دائماً كعنوان الوسيط (172.24.0.1). والنتيجة @@ -35,7 +55,7 @@ server { location ~ ^/backend/transit/.*\.php$ { try_files $uri =404; include fastcgi_params; - fastcgi_pass php_transit:9000; + fastcgi_pass $upstream_php_transit; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_read_timeout 60s; fastcgi_buffers 16 16k; @@ -47,7 +67,7 @@ server { location ~ ^/backend/food/.*\.php$ { try_files $uri =404; include fastcgi_params; - fastcgi_pass php_food:9000; + fastcgi_pass $upstream_php_food; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_read_timeout 60s; fastcgi_buffers 16 16k; @@ -57,7 +77,7 @@ server { location ~ \.php$ { try_files $uri =404; include fastcgi_params; - fastcgi_pass php:9000; + fastcgi_pass $upstream_php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_read_timeout 60s; fastcgi_buffers 16 16k; @@ -70,7 +90,7 @@ server { allow 127.0.0.1; deny all; include fastcgi_params; - fastcgi_pass php:9000; + fastcgi_pass $upstream_php; fastcgi_param SCRIPT_NAME /status; fastcgi_param SCRIPT_FILENAME /status; }