غیرفعال کردن tokenهای سرور در Nginx

nginx server tokens disable
07 بهمن 1403

معرفی ماژول server_tokens در Nginx


ماژول server_tokens در Nginx یکی از ویژگی های جالبی است که به ما اجازه می دهد کنترل بیشتری بر روی هدر های HTTP پاسخ سرور داشته باشیم. به عبارت دیگر، این ماژول اطلاعاتی را که سرور در هدر HTTP به کلاینت می‌فرستد، مدیریت می‌کند. به صورت پیش‌فرض، سرور Nginx معمولاً اطلاعاتی مثل نسخهٔ Nginx و نوع پلتفرم را در هدرهای پاسخ خود به نمایش می‌گذارد. این اطلاعات می‌تواند به هکرها کمک کند تا نقاط ضعف خاصی را در سرور شناسایی کنند.


غیرفعال کردن این اطلاعات باعث افزایش ایمنی وب‌سایت می‌شود. به این ترتیب، باعث می‌شود که هکرها نتوانند به راحتی اطلاعاتی در مورد تکنولوژی استفاده شده و نسخه‌های نرم‌افزاری سرور بدست آورند. در اینجا می‌خواهیم ببینیم که چگونه می‌توانیم این فیلدها را پیکربندی کنیم و به راحتی آن‌ها را غیرفعال کنیم.


برخلاف تصور عمومی، غیرفعال کردن این هدرها به سادگی با تنظیم یک گزینه در فایل پیکربندی Nginx قابل انجام است. در ادامه‌، چند نمونه کد به همراه توضیحات مربوطه ارائه می‌شود.


حال بیایید به کدهای مربوط به این تنظیمات نگاه کنیم و با هم ببینیم چگونه این کار انجام می‌شود.


server {
listen 80;
server_name example.com;

# Disable server tokens
server_tokens off;

location / {
root html;
index index.html index.htm;
}
}

توضیحات کد


در اینجا کد پیکربندی سرور Nginx را داریم:




server {

این خط بیان‌گر شروع تعریف یک بلوک سرور است که تنظیمات خاصی برای یک دامنه یا IP مشخص را شامل می‌شود.




listen 80;

این خط به Nginx می‌گوید که ترافیک ورودی بر روی پورت 80 (پورت متداول HTTP) را گوش دهد.




server_name example.com;

در این خط نام سرور مشخص شده است که در اینجا ما از example.com استفاده کرده‌ایم. این نام سرور نشان می‌دهد که درخواست‌ها برای چه دامنه‌ای مدیریت می‌شود.




server_tokens off;

با این خط، ما اطلاعات مربوط به نسخه سرور و سایر جزئیات مرتبط را غیرفعال می‌کنیم.




location / {

این خط شروع تعریف یک بلوک location است که مشخص می‌کند تنظیمات زیر آن برای چه مسیری در سایت اعمال می‌شود. در اینجا برای تمام مسیرها در دسترس است.




root html;

این خط به Nginx می‌گوید که دایرکتوری root برای فایل‌های وب‌سایت در دایرکتوری html قرار دارد.




index index.html index.htm;

در اینجا، Nginx مشخص می‌کند که چه فایلی به عنوان فایل اصلی (index) بارگذاری شود.




}

در نهایت، این خط پایان بلوک location و server را نشان می‌دهد.


سوالات متداول

؟

چرا باید server_tokens را غیرفعال کنم؟

؟

چگونه می‌توانم server_tokens را غیرفعال کنم؟

؟

آیا غیرفعال کردن server_tokens بر عملکرد سرور تاثیر می‌گذارد؟

؟

آیا نیاز به ریستارت سرور بعد از تغییرات هست؟