طرح‌چه

ایجاد پسوورد بر روی یک مسیر | Nginx from scratch

۲۶ تیر ۱۴۰۴

ایجاد پسوورد بر روی یک مسیر | Nginx from scratch
گاهی لازم است دسترسی به بعضی مسیرها را با استفاده از رمز عبور محدود کنیم. در این قسمت یاد می‌گیریم چطور این رمز عبور را ایجاد کرده و از آن استفاده کنیم.

برای ایجاد رمز عبور بر روی یک مسیر میتوان از ترکیب دستورات auth_basic و auth_basic_user_file استفاده کنیم.

دستور auth_basic یک متن را مشخص میکند که در در صفحه ی ورود پسوورد به کاربر نمایش داده می شود. دستور auth_basic_user_file مسیر فایلی که حاوی یوزرنیم و پسوورد است را مشخص میکند. برای ایجاد فایلی که حاوی یوزرنیم و پسوورد باشد میتوان از ابزار htpasswd استفاده کرد.

htpasswd -cb /etc/nginx/.htpasswd admin pass123

در دستور بالا یوزرنیم را admin و پسوورد را pass123 قرار دادیم. فلگ ‍-c یک فایل .htpasswd میسازد و با فلگ -b میتوانیم پسوورد با در خود دستور قرار دهیم. در صورتی که از فلگ -b استفاده نکنیم به صورت جداگانه پسوورد از ما پرسیده خواهد شد. این فلگ معمولا در زمانی کاربرد دارد که میخواهیم این دستور را درون کد خود قرار دهیم و قرار نیست پسوورد را به صورت دستی وارد کنیم.

در صورتی که فایل وجود داشته باشد میتوانیم یک یوزرنیم و پسوورد جدید را نیز به آن اضافه کنیم:

htpasswd -b /etc/nginx/.htpasswd user pass456

سپس میتونیم با تنظیمات زیر از مسیر مورد نظرمون حفاظت کنیم:

server {
    listen 8076 default_server;

    rewrite_log on;

    location /secure {
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/.htpasswd;

        root /var/www/public;
        index index.html;
    }
}

طبق مثال بالا اگر به مسیر /secure بریم , مرورگر یوزنیم و پسوورد را از ما خواهد پرسید و در صورتی که آن را به درستی وارد کنیم, صفحه ی مورد نظر به ما نشان داده می شود.

basic-auth username and password prompt
صفحه ورود یوزرنیم و پسوورد

برخی از مرورگرها متنی که با استفاده از دستور auth_basic مشخص میکنیم را نادیده میگیرند. برای مثال Chrome و Firefox این متن را نمایش نمی دهند.

در صورتی که یوزرنیم و پسوورد را به درستی وارد کنیم, تا مدت کوتاهی یوزرنیم و پسوورد دوباره از ما پرسیده نخواهند شد.

برای ایجاد فایل حاوی یوزرنیم و پسووردها همچنین میتوانیم از دستور openssl passwd استفاده کنیم. برای اطلاعات بیشتر میتونید مستندات nginx رو بررسی کنید.


قسمت قبل: ریدایرکت (redirect) و ریرایت (rewrite) | Nginx from scratch

قسمت بعد: بلاک و وایت لیست کردن آیپی ها | Nginx from scratch


دیدگاه ها