Files
2026-08-09 16:56:13 +03:00

118 lines
4.8 KiB
Plaintext

# نقطة واحدة لكل الخدمات الطلبية — التطبيق يغيّر الدومين فقط:
# /backend/... → الباك إند الرئيسي
# /v2/main/... → خادم المدفوعات
# السوكيتات تُنشر مباشرة من حاوياتها (2020 / 3030 / 4040) — لا تمر من هنا.
# مُحلِّل أسماء دوكر المدمج. سببه عطل حقيقي دام أياماً:
#
# 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 _;
root /var/www;
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). نمرّر
# ‏السلسلة إلى PHP ليقرأها عبر clientIp() في core/helpers.php.
set $tripz_fwd $http_x_forwarded_for;
if ($tripz_fwd = "") {
set $tripz_fwd $remote_addr;
}
fastcgi_param HTTP_X_FORWARDED_FOR $tripz_fwd;
fastcgi_param HTTP_X_REAL_IP $remote_addr;
access_log /dev/stdout;
error_log /dev/stderr warn;
# المواصلات (transit) — حاوية php-fpm معزولة عن الباك إند الرئيسي.
# يجب أن يسبقه location ~ \.php$ العام حتى لا يلتقطه أولاً.
location ~ ^/backend/transit/.*\.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass $upstream_php_transit;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 60s;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
# طلبات الطعام — حاوية php-fpm معزولة عن الباك إند الرئيسي.
location ~ ^/backend/food/.*\.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass $upstream_php_food;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 60s;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass $upstream_php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 60s;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
# حالة حوض fpm — من داخل شبكة الحاويات أو من السيرفر نفسه فقط
location = /fpm-status {
allow 172.16.0.0/12;
allow 127.0.0.1;
deny all;
include fastcgi_params;
fastcgi_pass $upstream_php;
fastcgi_param SCRIPT_NAME /status;
fastcgi_param SCRIPT_FILENAME /status;
}
# لوحات التحكم — الجديدة للتسمية المعتمدة، والقديمة للتوافق خلفها.
location /dashboard/tripz-admin {
alias /var/www/dashboard/tripz-admin;
index index.html;
try_files $uri $uri/ /dashboard/tripz-admin/index.html;
}
location /dashboard/admin {
alias /var/www/dashboard/tripz-admin;
index index.html;
try_files $uri $uri/ /dashboard/admin/index.html;
}
location /dashboard/tripz-service {
alias /var/www/dashboard/tripz-service;
index index.html;
try_files $uri $uri/ /dashboard/tripz-service/index.html;
}
location /dashboard/service {
alias /var/www/dashboard/tripz-service;
index index.html;
try_files $uri $uri/ /dashboard/service/index.html;
}
location / {
try_files $uri $uri/ =404;
}
}