محافظت از یک دایرکتوری وب با پسورد، به کمک Nginx

محافظت از یک دایرکتوری وب با پسورد، به کمک Nginx

این راهکار برای زمانی هستش که بخواید یک دایرکتوری وب رو خیلی سریع و ساده با username / password محافظت کنید.

برای انجام این راهکار موارد زیر رو نیاز دارید:

  • nginx نصب شده روی سرور و آشنایی عمومی با کانفیگ
  • دسترسی روت سرور

مرحله ۱- ایجاد نام کاربری و پسورد

نام کاربری و رمز عبوری که میخواید برای محافظت از دایرکتوری استفاده بشه باید تو فایلی به نام با ۲ روش میتونید این کار رو انجام بدید:

۱- اگر آپاچی دارید روی سرور میتونید از یکی از ابزارهاش به نام htpasswd برای این کار استفاده کنید. دستور زیر رو توی ترمینال بنویسید:

htpasswd -c /path/to/file/.htpasswd username

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

۲- اگر ابزار فوق رو ندارید می تونید دستی این کار رو انجام بدید. یک فایل به نام .htpasswd در مسیر دلخواه (مثلا تو home میتونید بذارید) ایجاد کنید.

محتوای فایل به این صورت باید باشه:

username:encrypted-password
با استفاده از ابرزارهای آنلاین (پیشنهاد : http://aspirine.org/htpasswd_en.html ) می تونید یک پسور encrypt شده ایجاد کنید. در نهایت محتوای فایل شما به این شکل باید بشه:
hamed:$apr1$sOiSeo04$l8WffD3EX7shHf290HHPX/
  مرحله ۲ : کانفیگ nginx

یکی از فایل های کانفیگ nginx رو باز کنید و انتهای بلاک دایرکتوری مورد نظرتون این دو خط رو اضافه کنید:

auth_basic "Limited access!";
auth_basic_user_file /path/to/file/.htpasswd;

اگر دقیقا متوجه نشدید میتونید در انتها فایل مثال رو ببنید. حتما متوجه خواهید شد. چون فایل کانفیگ nginx رو تغییر دادیم لازمه یه بار nginx رو ریستارت کنیم:

service nginx restart

من یه مثال نوشتم که میتونید ازش استفاده کنید برای تست: روی سروری که داشتم یه دایرکتوری تو مسیر /home/admin به نام files ایجاد کردم. محتوای فایل .htpasswd که توی home گذاشتم:

client:$apr1$sOiSeo04$l8WffD3EX7shHf290HHPX/

محتوای فایل کانفیگ nginx:

server{
listen 138.1.1.1:80;
server_name mydomain.ir;

location /files {
autoindex on;
alias /home/admin/files;
auth_basic "Limited access";
auth_basic_user_file /home/.htpasswd;
}
}
با این کانفیگ آدرس mydomain.ir/files محدود به وارد کردن یوزرنیم/پسورد هستش.

موفق باشید.

دیدگاه‌تان را بنویسید: