گذاشتن پسورد بر روی پوشه در 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