رمز عبور با Nginx

محمد عسکری
منتشر شده در ۳ ماه پیش | خواندن در ۳ دقیقه

زمانی که سرویسی رو آنلاین میکنیم، گاها پیش میاد که بعضی از آدرس ها رو نیاز داریم که تنها افراد خاصی ببینن. برای این کار ساده ترین راه حل اغلب قراردادن رمز عبور برای آدرس مربوطه هست. حالا تو این مقاله، میخواییم، قراردادن رمز عبور با nginx رو توضیح بدیم.

قبل از هر چیزی شما نیاز دارید مطمئن بشید که nginx را روی سرورتون دارید. 

sudo apt-get update
sudo apt-get install nginx

حالا نیازداریم یک فایل رمز عبور درست کنیم که بتونیم به nginx بگیم از طریق اون فایل احراز هویت رو انجام بده. برای این کار از ابزار htpasswd استفاده می کنیم که با استفاده از دستور زیر در دسترس قرار میگیره

sudo apt install apache2-utils

حالا با استفاده از دستور زیر یک کاربر درست میکنیم

sudo htpasswd -c /etc/nginx/.htpasswd sammy

در صورتی که بخواییم کاربر دیگری ایجاد کنیم، فقط کافیه یک بار دیگه دستور را اجرا کنیم، این بار با کاربر دیگر

sudo htpasswd /etc/nginx/.htpasswd another_user

اگر توجه داشته باشید در دستور اول یک فلگ -c اضافه شده، این فلگ میگه که فایل ایجاد بشه. برای اجراهای بعدی دستور نیازی به اون فلگ نیست.

حالا اگه فایل مورد نظر رو بگیریم، با چیزی شبیه خروجی زیر مواجه میشیم

cat /etc/nginx/.htpasswd
Output
sammy:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz. another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

تنظیم nginx برای استفاده از رمز عبور

حالا نیاز داریم Nginx رو تنظیم کنیم که از این فایلی که درست کردیم استفاده کنه. 

واسه اینکار درحال حاضر فایل default رو ادیت میکنیم

sudo nano /etc/nginx/sites-enabled/default

و وقتی فایل رو باز میکنیم با خروجی شبیه خروجی زیر مواجه خواهیم شد

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}

حالا برای اضافه کردن احراز هویت، نیاز داریم دو دستور را ست کنیم. 

  • auth_basic
  • auth_basic_user_file

و بعد از تنظیم کردن فایل ما شبیه فایل زیر باید بشه

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

بعد از انجام این کار، nginx را ریستارت میکنیم

sudo service nginx restart

بررسی صحت انجام کار

حالا اگر آدرس سرور، یا سرویسی را که کانفیگ کردیم، در مرورگر وارد کنیم، باید با پنجره زیر مواجه بشیم.

و در صورتی که رمز عبور را به درستی وارد نکنیم، با پیامی شبیه پیام زیر مواجه میشیم.

جمع بندی

بعد از خوندن این مقاله، شما هر اون چیزی که نیاز داشتید درباره تنظیم کردن basic auth را روی Nginx یاد گرفتید، توجه داشته باشید، بهتره این کار رو همراه با تنظیم کردن SSL انجام بدید که رمز عبور شما، به صورت متن خام به سرور ارسال نشه.


محمد عسکری

نظرات