server { listen 80; listen [::]:80; listen 443 ssl http2; listen [::]:443 ssl http2; {{ssl_certificate_key}} {{ssl_certificate}} server_name intaleqapp.com www.intaleqapp.com www1.intaleqapp.com; {{root}} {{nginx_access_log}} {{nginx_error_log}} # التحويل لـ HTTPS if ($scheme != "https") { rewrite ^ https://$host$uri permanent; } {{settings}} index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args; } # إعدادات الروابط الخاصة بالتطبيقات (يجب أن تسبق قواعد حجب الملفات المخفية) location ^~ /.well-known/apple-app-site-association { default_type application/json; auth_basic off; allow all; } location ~ /.well-known { auth_basic off; allow all; } # منع الوصول الكامل لمجلد اللوجات (سجلات PHP، السجلات المخصصة) location ^~ /logs/ { deny all; } # منع الوصول لملفات إدارة الحزم ومخرجات المشروع الداخلية location ~* ^/(composer\.(json|lock)|package(-lock)?\.json)$ { deny all; } # منع الوصول لأي ملف/مجلد مخفي: .env, .git, .enckey, .secret_key, .htaccess, .DS_Store ... # (تأتي بعد قواعد .well-known أعلاه حتى لا تحجبها Nginx يفحص location~ بترتيب ظهورها بالملف) location ~ /\. { deny all; access_log off; log_not_found off; } # معالجة ملفات PHP مباشرة دون وسيط location ~ \.php$ { include fastcgi_params; fastcgi_intercept_errors on; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; try_files $uri =404; fastcgi_read_timeout 3600; fastcgi_send_timeout 3600; fastcgi_pass 127.0.0.1:{{php_fpm_port}}; fastcgi_param PHP_VALUE "{{php_settings}}"; } # معالجة الملفات الثابتة location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map|mjs)$ { add_header Access-Control-Allow-Origin "*"; expires max; access_log off; try_files $uri =404; } }