یکی از نیازمندیهای ما هنگام توسعه نرم افزار این است که پروژه ای که توسعه میدهیم هنگام تست برخی از نرم افزارهای مورد استفاده به صورت آنلاین در دسترس قرار بگیرد، یا اینکه لازم است دمویی از پروژه را به مشتری نمایش دهیم لازم است بر روی سرور آپلود و دسترسی دهیم تا دموی اولیه پروژه را مشاهده کند.
مثلا برای تست درگاههای بانکی، تست ایمیل و … گاهی اوقات لازم است که پروژه لایو باشد و یا اینکه بر روی گوشی موبایل خود بتوانیم تستهای حالت ریسپانسیو را انجام دهیم و به دلایل بسیار زیادی لازم است این اتفاق صورت بگیرد.
با استفاده از ngrok به راحتی میتوانیم محیط لوکالهاست خودمون رو به صورت لایو در دسترس قرار دهیم.
معرفی ngrok
Spend more time programming. One command for an instant, secure URL to your localhost server through any NAT or firewall.
ngrok provides a real-time web UI where you can introspect all HTTP traffic running over your tunnels. Replay any request against your tunnel with one click.
ngrok یک ابزار است که ارتباط امنی را با لوکال هاست بر قرار میکند تا در یک آدرس آنلاین بتوانیم لوکال هاست خود را در دسترس قرار دهیم.
نصب ngrok به صورت global
برای نصب ngrok بر روی مک میتوانید با استفاده از Homebrew با دستور زیر نصب کنید. در صورتیکه با استفاده از brew آن را نصب کنید به صورت global در دسترس است.
brew cask install ngrok
اگر با استفاده از brew آن را نصب نکردید میتوانید به صورت زیر آن را به صورت global تعریف کنید.
# cd into your local bin directory
cd /usr/local/bin
# create symlink
ln -s /Applications/ngrok ngrok
برخی دستورات مهم ngrok
برخی از دستورات مهم ngrok را به صورت زیر میتوانید مشاهده کنید.
۱. ایجاد یک آدرس ایمن ( Secure Tunnels )
با استفاده از این دستور آدرس لوکال خود را به صورت آنلاین در دسترس قرار دهید.
ngrok http 80
با اجرای دستور فوق نتیجه زیر مشاهده خواهد شد.
فرض کنید آدرس دامنه مجازی ما mekaeil.local هستش و روی پورت ۸۰۰۰ در دسترس است که با اجرای کامند زیرا تنها وقتی میتوانیم آن را در دسترس قرار دهیم که وبسرور را روی پورت ۸۰۰۰ در اجرا کنیم. مثلا پروژه ای که با لاراول پیاده سازی شده است را ابتدا php artisan serve اجرا میکنیم و بعد آن را با ngrok در دسترس قرار میدهیم.
ngrok http mekaeil.local:8000
نکته: با استفاده دکمه Ctr+ C میتوانید آن را متوقف و از دسترس خارج کنید.
۲. تعریف رمزعبور برای آدرس (Password Protected)
با استفاده از دستور زیر میتوانیم برای آدرس موردنظرمان رمز عبور تعریف کنیم.
ngrok http -auth "user:password" 80
۳. تعریف آدرس ایمن برای دامنه مجازی (Target virtual-host sites)
ngrok http -host-header=mekaeil.local 80
اگر برای آدرس دامنه مجازی رمز عبور تعریف کنیم به صورت زیر خواهد بود.
ngrok http -auth "user:pass" -host-header=mekaeil.local 80
برای مطالعه بیشتر داکیومنت ngrok را مطالعه نمائید.
وقتی که کامندها را اجرا میکنید آدرس http://127.0.0.1:4040 نیز در دسترس است که با باز کردن آن میتوانید جزئیات رکوستهایی که در دسترس قرار میگیرد و کاربران باز میکنند را نمایش میدهد به نوعی مانیتورینگ آدرسهایی است که کاربر روی آدرس آنلاین باز میکند. همچنین دکمه Replay را بزنید مجدد رکوست اجرا میشود.
تجربه: من خودم برای پروژههایی که با لاراول است و دامنه مجازی ست کردم تست کردم بعد از کلیک با مشکلی مواجه میشدند و به دامنه مجازی ریدایرکت میشدند که ۴۰۴ میشد ولی بعد از اینکه php artisan serve را اجرا کردم و به صورت زیر لینک رو جنریت کردم به درستی پروژه کار میکنه.
ngrok http mekaeil.local:8000