نظرة على Nginx

تعتمد EGPHP على Nginx (يُنطق "engine-x") كسيرفر ويب. ويشتهر Nginx بأدائه العالي وثباته واستهلاكه المنخفض للموارد. وعلى خلاف Apache، لا يستخدم Nginx ملفات .htaccess.

لا وجود لـ .htaccess: لا يدعم Nginx ملفات .htaccess، ويتم تحقيق الوظائف نفسها عبر ملفات إعداد Nginx.

الوصول إلى إعدادات Nginx

  1. سجّل الدخول إلى EGPNL
  2. انتقل إلى Domains
  3. اضغط على نطاقك
  4. اختر Nginx Config أو Advanced Settings

إعدادات Nginx الشائعة

تحويل HTTP إلى HTTPS

افرض على كل الزيارات استخدام HTTPS:

if ($scheme != "https") {
    return 301 https://$host$request_uri;
}

تحويل www إلى النطاق بدونها

if ($host ~* ^www\.(.*)) {
    return 301 https://$1$request_uri;
}

تحويل النطاق بدون www إلى www

if ($host !~* ^www\.) {
    return 301 https://www.$host$request_uri;
}

الروابط الدائمة في WordPress

مطلوب لتعمل روابط WordPress الصديقة لمحركات البحث:

location / {
    try_files $uri $uri/ /index.php?$args;
}
لمستخدمي WordPress: يضبط EGPNL الروابط الدائمة تلقائيًا عند إضافة موقع WordPress، فلا حاجة لأي إعداد يدوي!

ترويسات الأمان

أضف ترويسات الأمان لحماية موقعك:

add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;

إعداد التخزين المؤقت

فعّل التخزين المؤقت في المتصفح للملفات الثابتة:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|woff|ttf)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}

ضغط Gzip

فعّل ضغط gzip لتحميل أسرع للصفحات (يكون مفعّلًا افتراضيًا في العادة):

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_min_length 1000;

صفحات أخطاء مخصصة

حدّد صفحات مخصصة لأخطاء 404 و500:

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;

حظر الوصول

حظر عناوين IP محددة

deny 123.45.67.89;
deny 98.76.54.0/24;

حظر ملفات محددة

location ~ /\.(htaccess|htpasswd|git|svn) {
    deny all;
}

حماية مجلد بكلمة مرور

location /admin {
    auth_basic "Restricted";
    auth_basic_user_file /path/to/.htpasswd;
}

إعادة كتابة الروابط

أعد كتابة الروابط دون إعادة توجيه:

# Rewrite old URL to new URL internally
rewrite ^/old-page$ /new-page last;

# Redirect old URL to new URL (301)
rewrite ^/old-url$ /new-url permanent;

إعداد PHP

اضبط إعدادات PHP الخاصة بنطاقك:

location ~ \.php$ {
    fastcgi_param PHP_VALUE "
        upload_max_filesize=64M
        post_max_size=64M
        max_execution_time=300
    ";
}
انتبه: قد يجعل الإعداد الخاطئ لـ Nginx موقعك غير متاح. خذ دائمًا نسخة احتياطية من إعدادك الحالي قبل أي تعديل.

اختبار الإعداد

بعد إجراء التعديلات:

  1. سيتحقق EGPNL من صحة إعدادك تلقائيًا
  2. إذا وُجدت أخطاء، فسترى رسالة تحذير
  3. صحّح أي أخطاء قبل الحفظ
  4. سيُعاد تحميل Nginx تلقائيًا بعد الحفظ الناجح