کشینگ و رفع اشکال NGINX با Reverse Proxy در cPanel & WHM

این مقاله نحوه عملکرد کشینگ در NGINX با Reverse Proxy را توضیح می‌دهد. شامل محل ذخیره کش، کنترل هدرهای کش، کلیدهای کش سفارشی، مدیریت کش با htaccess، تشخیص وضعیت کش برای ابزارهای شخص ثالث، و همچنین رفع اشکالات رایج مانند خطای proxy_headers_hash و مشکلات ری‌استارت NGINX است.

NGINX cachingreverse proxy troubleshootingcPanel NGINX cache

~3 دقیقه مطالعه · آخرین به‌روزرسانی ۳ اسفند ۱۴۰۴

1. مقدمه


این مستند نحوه عملکرد کشینگ در NGINX® با Reverse Proxy و همچنین روش‌های رفع اشکال رایج را توضیح می‌دهد.




2. کشینگ در NGINX با Reverse Proxy


NGINX به‌صورت پیش‌فرض تمام درخواست‌ها را کش می‌کند و آن‌ها را به Apache پروکسی می‌کند. کش برای هر کاربر به‌صورت جداگانه ذخیره می‌شود.


مسیر ذخیره کش (type = نوع کش، username = نام کاربر):

/var/cache/ea-nginx/proxy/username

NGINX از نوع کش proxy برای دستور proxy_pass استفاده می‌کند. پوشه‌های کش دارای سطح دسترسی 700 هستند و فقط کاربران nobody و root به آن دسترسی دارند.


درخواست‌های داینامیک باید هدرهای کنترل کش مناسب ارسال کنند. در غیر این صورت، ممکن است پاسخ‌های کش‌شده اشتباه به کاربران نمایش داده شود.


برای رفع مشکل:

  • کش را برای کاربر از طریق WHM » NGINX Manager غیرفعال کنید.
  • برنامه خود را طوری تنظیم کنید که هدرهای مناسب ارسال کند.



3. کلیدهای کش سفارشی


می‌توانید کش را بر اساس شرایط مختلف جدا کنید (مثلاً موبایل و دسکتاپ).


برای این کار مقدار $CACHE_KEY_PREFIX را در فایل زیر تنظیم کنید:

/etc/nginx/conf.d/includes-optional/set-CACHE_KEY_PREFIX.conf

این فایل به‌صورت پیش‌فرض شامل نمونه‌ای برای کش جداگانه موبایل است (کامنت شده).




4. مدیریت کش با htaccess


می‌توانید از فایل .htaccess برای کنترل کش استفاده کنید، مخصوصاً زمانی که برنامه شما هدرهای مناسب ارسال نمی‌کند.


نمونه برای جلوگیری از کش روی مسیرهای حساس:

# برنامه هدرهای مناسب ارسال نمی‌کند و داده خصوصی دارد.

    
        Header set Pragma "no-cache"
        Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
        Header set Expires "Thu, 1 Jan 1970 00:00:00 GMT"
    


مهم: اگر برنامه شما برای داده‌های حساس هدر مناسب ارسال نکند، یک ریسک امنیتی است.


برای فعال‌سازی کش روی فایل‌های استاتیک:


Header set Cache-Control "max-age=3600, public"




5. تشخیص وضعیت کش برای ابزارهای شخص ثالث


ابزارهای شخص ثالث می‌توانند وضعیت کش را با بررسی فایل‌های زیر تشخیص دهند:

اگر فایل زیر وجود نداشته باشد، NGINX نصب نیست:

/etc/nginx/ea-nginx/cache.json

اگر کلید enabled در فایل‌های زیر وجود داشته باشد، مقدار آن وضعیت کش را تعیین می‌کند:

سطح کاربر:

/var/cpanel/userdata/user/nginx-cache.json

سطح global:

/etc/nginx/ea-nginx/cache.json

اگر هیچ‌کدام کلید enabled نداشته باشند، کش به‌صورت پیش‌فرض فعال است.




6. رفع اشکال NGINX


6.1 خطای “Could not build proxy_headers hash”


اگر خطایی مشابه زیر دریافت کردید:

nginx: [emerg] could not build proxy_headers_hash, you should increase proxy_headers_hash_bucket_size

این خطا زمانی رخ می‌دهد که یک proxy_set_header با نام هدر بسیار طولانی وجود داشته باشد.


راه‌حل: دستور زیر را دقیقاً قبل از آن هدر اضافه کنید:

proxy_headers_hash_bucket_size number;



6.2 NGINX ری‌استارت نمی‌شود


اگر NGINX را با دستور nginx اجرا کرده باشید، دستورات معمولی ری‌استارت کار نخواهند کرد.


راه‌حل:

  1. سرویس را متوقف کنید:
/usr/sbin/nginx -s stop

  1. سپس با یکی از دستورات زیر NGINX را اجرا کنید:
/usr/local/cpanel/scripts/restartsrv_nginx start
systemctl start nginx.service
/etc/init.d/nginx start



نتیجه‌گیری


کشینگ NGINX با Reverse Proxy عملکرد بسیار قدرتمندی ارائه می‌دهد، اما نیازمند هدرهای صحیح و پیکربندی دقیق است. با استفاده از کلیدهای کش سفارشی، مدیریت کش با htaccess و روش‌های رفع اشکال، می‌توانید یک محیط سریع، امن و پایدار ایجاد کنید.


نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

راهنمای کامل بازیابی اکانت cPanel و انتقال حساب‌ها و تنظیمات برای مدیران سیستم تازه‌کار

این مقاله یک راهنمای جامع برای مدیران سیستم تازه‌کار است که می‌خواهند اکانت‌های cPanel را بازیابی کنند، حساب‌ها و تنظیمات را بین سرورها منتقل کنند، و از ابزارهای تشخیصی برای بررسی مشکلات انتقال و بازیابی استفاده کنند. این راهنما شامل نحوه استفاده از WHM، نحوه آپلود بکاپ‌ها، روش‌های انتقال، و فعال‌سازی لاگ‌های پیشرفته است.

ادامه

How to Move All cPanel Accounts from One Server to Another

This guide explains how to migrate all cPanel accounts, service configurations, SSL certificates, and the main server IP address from an old source server to a new target server. It covers installation requirements, configuration transfers, account migration, IP reassignment, DNS adjustments, and SSL restoration.

ادامه

آموزش کامل مهاجرت یک وب‌سایت وردپرس از macOS به سرور cPanel & WHM

این مقاله نحوه انتقال یک وب‌سایت وردپرس که روی macOS میزبانی شده است را به یک سرور cPanel & WHM توضیح می‌دهد. شامل خروجی گرفتن از دیتابیس، آپلود فایل‌ها، ایجاد دیتابیس جدید، تنظیم wp-config.php، تغییر URL سایت، و رفع لینک‌ها و تصاویر خراب است.

ادامه

آموزش کامل انتقال دستی یک اکانت بین سرورها در cPanel & WHM

این مقاله نحوه انتقال دستی یک اکانت بین دو سرور را زمانی که حجم اکانت برای ابزارهای انتقال WHM بسیار بزرگ است توضیح می‌دهد. شامل ایجاد دایرکتوری موقت، فشرده‌سازی public_html و لاگ‌ها، انتقال امن با scp، و بازیابی فایل‌ها در سرور جدید است.

ادامه

آموزش کامل مهاجرت دستی داده‌های Horde به Roundcube در cPanel & WHM

این مقاله نحوه مهاجرت دستی تقویم‌ها و مخاطبین Horde به Roundcube را در نسخه‌های 108 تا 118 cPanel & WHM توضیح می‌دهد. شامل مراحل خروجی گرفتن از Horde، انتقال فایل‌ها به مسیرهای صحیح، و وارد کردن داده‌ها در Roundcube با استفاده از افزونه‌های داخلی یا ابزارهای واردسازی است.

ادامه

آموزش کامل مهاجرت دستی اکانت‌ها از کنترل‌پنل‌های غیرپشتیبانی‌شده به cPanel & WHM

این مقاله نحوه مهاجرت دستی اکانت‌ها از کنترل‌پنل‌های غیرپشتیبانی‌شده به cPanel & WHM را توضیح می‌دهد. شامل اقدامات قبل از مهاجرت، نصب سرور جدید، انتقال فایل‌ها و دایرکتوری‌ها، بازیابی دیتابیس‌ها، انتقال SSL، و اقدامات پس از مهاجرت است.

ادامه