گذاشتن پسورد بر روی پوشه در Nginx
ممکن است بخواهید دسترسی به برخی از پوشه ها و یا مسیر ها در وب سایت خود را از طریق گذاشتن پسورد امن کنید تا فقط افرادی که نام کاربری و کلمه عبور را دارند قادر به بارگزاری مسیر مورد نظر باشند.
برای این کار ابتدا میبایست یه فایل که حاوی username و password میباشد ایجاد نمایید. به دو طریق می توان این کار را انجام داد:
روش اول:
با استفاده از دستور htpasswd. در صورتیکه وب سرویس apache بر روی سرور نصب باشد این ابزار نصب میباشد. در غیر این صورت میتوانید با دستور زیر آن را نصب نمایید:
sudo apt-get install apache2-utils
sudo yum install httpd-tools
سپس با دستور زیر یک فایل به نام secrets ایجاد نمایید:
sudo htpasswd /path/to/file/secrets -c desired_username e.g: sudo htpasswd /etc/nginx/secrets -c linuwiki
در ادامه از شما پسورد پرسیده میشود. در نهایت یک فایل با محتویات مشابه زیر خواهید داشت:
linuwiki:$apr1$9FOhOvtQ$h6QIpiJJLBtWQxAx5bxO60
روش دوم: میتوانید فایل secrets را دستی نیز ایجاد نمایید. کافیست با استفاده از دستور زیر یک پسورد رمز شده (encrypted) ایجاد نمایید:
perl -le 'print crypt("your_strong_password", "salt-hash")'
e.g:
perl -le 'print crypt("H4%&jhds6s*", "ToPSalT")'
Toz5u5a/agGHs
سپس فایل secrets را باز نموده و پسورد را به همراه یوزنیم مورد نظر در فایل قرار دهید:
linuwiki:Toz5u5a/agGHs
تنظیمات Nginx:
فایل کانفیگ مورد نظر خود در nginx را باز نموده و خطوط زیر را به آن اضافه نمایید:
auth_basic "Protected Login"; auth_basic_user_file /etc/nginx/secrets;
فرض کنید میخواهیم دسترسی زیر دامنه images را محدود نماییم. فایل تنظیمات مشابه زیر میشود:
server server {
listen 80;
server_name mydomain.com;
root /usr/share/nginx/html;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log error;
location / {
}
}
server {
listen 80;
server_name images.mydomain.com;
root /usr/share/nginx/html/images;
auth_basic "Protected Area";
auth_basic_user_file /etc/nginx/secrets;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log error;
location / {
}
}
در نهایت سرویس Nginx را ریستارت نمایید:
sudo systemctl restart nginx
درصورتیکه میخواهید چندین username و password داشته باشید آنها را در ادامه فایل قرار دهید:
linuwiki1:encrypted_password_1 linuwiki2:encrypted_password_2 linuwiki3:encrypted_password_3
توجه: سویچ -c در ابزار htpasswd فایل را پاک کرده و اظلاعات جدید را اضافه میکند. درصورتیکه مخواهید چندین کلمه عبور ایجاد نماید از سویچ -n استفاده نمایید:
htpasswd -n linuwiki