برنامه نویسی

قبل از راه اندازی: در مورد شکار مناسب و مادربزرگ وب

پیدا کردن یک دامنه مناسب این روزها بیشتر از یک کار فنی شبیه به شکار گنج است. و بعد از دو هفته فیلتر کردن از طریق TLDS و تله های سئو ، روی چیزی فرود آمدم که بعد از 24 ساعت از داشتن آن پشیمان نشدم. من با اطمینان می توانستم با آن زندگی کنم.

پاداش: این فقط یک تایپی دور از نام شرکت کسی نبود.

برای من ، این بسیار زیاد است. این مسیر راه اندازی بالقوه را باز کرد و به معنای واقعی کلمه 500 تا 1،000 پوند در هزینه های تخصصی برند و یک دامنه گران قیمت ذخیره کرد.

دامنه را خریداری کرد. آن را وارد کنید. صفحه نگهدارنده مکان “تازه ثبت شده” را بدست آورد. این انتظار می رود و از کجا قسمت سرگرم کننده شروع می شود: درک کنید که چگونه واقعاً از آن استفاده کنید.

صفحات GitHub؟ cloudflare + iaas؟ به یک نمونه محاسباتی یا فلز لخت با بیایید رمزگذاری کنیم؟ hyperscalers؟

برای تعهد به یک راه حل ، چندین تکرار ارزیابی برای من طول کشید.

اگر شما کنجکاو هستید که چگونه من در نهایت این همه آشفتگی را حس کردم-یا می خواهم برخی از محاکمه و خطا را میانبر کنم و دریابم که چگونه انتخاب کردم که چه چیزی را بپردازم و چه چیزی را به DIY پرداخت کنم-ادامه مطلب.


فهرست مطالب

صفحات github

صفحات GitHub نوار مجرای میزبانی استاتیک است – سریع ، رایگان و به اندازه کافی خوب برای اکثر پروژه های سریع. تمام آنچه شما نیاز دارید یک repo ، یک شاخه و یک است index.html -و رونق: صفحه نمایش عمومی با کار صفر OPS.

در ابتدا ، این یک زیر دامنه GitHub را به شما می دهد yourname.github.io، اما به راحتی می توانید دامنه سفارشی خود را به آن بچسبانید.

اسکن اسناد من به سرعت فاش کردم که چرا برای من تازه از اینجا شروع می کنم ایده خوبی نیست:

Tip
We recommend verifying your custom domain prior to adding it to your repository, in order to improve security and avoid takeover attacks. For more information, see Verifying your custom domain for GitHub Pages.

Warning
We strongly recommend that you do not use wildcard DNS records, such as *.example.com. These records put you at an immediate risk of domain takeovers, even if you verify the domain. For example, if you verify example.com this prevents someone from using a.example.com but they could still take over b.a.example.com (which is covered by the wildcard DNS record).
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


برای مرحله من ، این بدان معنی بود که صفحات GitHub راه حل کامل نبود. برای میزبانی یک صفحه استاتیک عالی است – و اگر این چیزی است که شما نیاز دارید ، به دنبال آن بروید. مستندات آنها را دنبال کنید (یا اگر یادداشت های من را می خواهید نظر خود را رها کنید).

اما من به چیزی احتیاج داشتم که بتواند از طریق زیر دامنه ها ، ترافیک را به محیط های داخلی و نمایشی منتقل کند. صفحات GitHub فقط با این نوع انعطاف پذیری خوب بازی نمی کنند.

بنابراین به صفحه نقاشی برگردید.

Wildcard DNS Records

با توجه به تمام سکسکه های زیر که با آنها روبرو شدم همانطور که بعداً در اینجا مشاهده خواهید کرد ، فهمیدم که ایده خوبی است که بزرگنمایی و فکر کردن در مورد آنچه که حتی سعی در دستیابی به آن دارم فکر می کنم.


من: رکورد Wildcard DNS چیست و چرا یکی را می خواهید؟

chatgpt:

رکورد DNS Wildcard نوعی رکورد DNS است که با درخواست های زیر دامنه های غیر موجود در یک دامنه معین مطابقت دارد. این توسط یک ستاره نشان داده شده است

*.example.com  IN  A  192.0.2.1
به جای زیر دامنه. به عنوان مثال:

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این بدان معنی است که هر زیر دامنه ای از مثال. com که سابقه DNS خاصی ندارد – مانند foo.example.com ، bar.example.com یا xyz123.example.com – تا 192.0.2.1 حل خواهد شد.
چرا رکورد Wildcard DNS می خواهید؟

  1. در اینجا دلایل متداول:
    همه چیز برای زیر دامنه ها

  2. اگر انتظار تولید زیر دامنه پویا یا غیرقابل پیش بینی دارید (به عنوان مثال ، زیر دامنه های تولید شده توسط کاربر مانند نام کاربری.example.com) ، یک رکورد کارت وحشی به شما امکان می دهد بدون نیاز به پیش تنظیم هر یک از آنها ، آنها را اداره کنید.
    ساده سازی مدیریت DNS

  3. به جای ایجاد صدها رکورد به صورت دستی ، یک رکورد کارت وحشی تنها همه زیر دامنه های نامشخص را کنترل می کند.
    برنامه های چند مستاجر

  4. برای سیستم عامل های SaaS که زیر دامنه های سفارشی را به کاربران ارائه می دهند (user1.example.com ، user2.example.com) ، یک Wildcard DNS این امر را مقیاس پذیر و قابل کنترل می کند.
    SSL/TLS با گواهینامه های کارت وحشی

  5. اگر از گواهی TLS Wildcard استفاده می کنید (به عنوان مثال ، *.example.com) ، داشتن سابقه DNS Wildcard با اطمینان از وضوح DNS با پوشش گواهینامه ، آن را تکمیل می کند.
    دست زدن به

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

سوابق Wildcard با سوابق موجود در زیر دامنه مطابقت ندارند. اگر blog.example.com سابقه خاص خود را داشته باشد ، تقدم لازم است.

مراقب باشید با MX Records – Wildcard MX Records می تواند منجر به مسیریابی ایمیل غیر منتظره شود.

ذخیره سازی و انتشار DNS می تواند عیب یابی را با کارتهای وحشی سخت تر کند.


نگرانی های امنیتی: کارتهای وحشی اشتباه می توانند سوء استفاده از زیر دامنه ها یا انجام فیشینگ را برای مهاجمان آسانتر کنند.


خوب این دقیقاً همان چیزی است که من به دنبال آن هستم. بیایید ادامه دهیم

ابری


این گزینه توصیه شده است. و من همیشه می خواستم آن را امتحان کنم. این همچنین یکی از مواردی است که Chatgpt پس از گفتن پیشنهاد قبلی خود با استفاده از صفحات GitHub ، به شدت توصیه می کند ، ایده خوبی نیست.

من: “باشه ، صفحات GitHub خارج است – در مورد Cloudflare چیست؟”

chatgpt:
CloudFlare یک انتخاب عالی برای مدیریت DNS ، SSL رایگان و حتی ترافیک پروکسی است.

برای یک حساب CloudFlare رایگان ثبت نام کنید و دامنه خود را اضافه کنید.

نامداران نام خود را در CloudFlare قرار دهید.

Create a DNS record:

Type: A  
Name: @  
Content: 192.0.2.123    # your server IP  
Proxy status: Proxied  
TTL: Auto  
تحت گواهینامه های SSL/TLS → Edge ، “همیشه از HTTPS” و “بازنویسی خودکار HTTPS” استفاده کنید.

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید
(اختیاری) اگر واقعاً می خواهید زیر دامنه های کارت Wildcard داشته باشید ، به یک برنامه پرداخت شده برای فعال کردن Wildcard SSL در گواهی جهانی رایگان نیاز دارید.


سپس می توانید از قوانین صفحه برای مسیر dev.example.com استفاده کنید → سرور dev و demo.example.com → کادر نمایشی خود را.

این حتی به چه معنی است؟

Wildcard SSL در CloudFlare رایگان ≠ رایگان؟

Universal SSL certificates present some limitations.

Hostname coverage

Full setup
Universal SSL certificates only support SSL for the root or first-level subdomains such as example.com and www.example.com. To enable SSL support on second, third, and fourth-level subdomains such as dev.www.example.com or app3.dev.www.example.com, you can:

Purchase Advanced Certificate Manager to order advanced certificates.

Upgrade to a Business or Enterprise plan to upload custom certificates.
این ممکن است شرایطی باشد که وقت آن رسیده است که مستندات واقعی را بخوانید.

حالت تمام صفحه را وارد کنید


از حالت تمام صفحه خارج شوید
به طور خلاصه: SSL رایگان ، خودکار برای دامنه خود و زیر دامنه های سطح اول مانند www.example.com ، app.example.com یا dev.example.com دریافت می کنید. بدون رمزگذاری اسکریپت ها ، بدون گواهینامه ، بدون کرونج.

فقط دامنه خود را نشان دهید ، برخی از تنظیمات را تغییر دهید و کار می کند.

آیا به لانه سازی عمیق تر یا کنترل بیشتر نیاز دارید؟ این جایی است که برنامه های پرداخت شده و گواهینامه های سفارشی وارد می شوند.

اما برای من ، ردیف رایگان تمام جعبه ها را بررسی می کند-Wildcard SSL برای زیر دامنه های سطح اول مانند *.example.com ، تنظیم ساده ، بدون سردرد نگهداری.

Warning
Note that the certificate Cloudflare provides for you to set up Authenticated Origin Pulls is not exclusive to your account, only guaranteeing that a request is coming from the Cloudflare network.
For more strict security, you should set up Authenticated Origin Pulls with your own certificate and consider other security measures for your origin.
این گفته ، همانطور که من به اسناد می پرداختم (به دلیل این که من این کار را کردم) ، به یکی از آن دسته از پاورقی های بی سر و صدا رسیدم – نوعی که باعث مکث و رفتن می شود ، “صبر کنید … من دقیقاً به اینجا اعتماد دارم؟”

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


این منطقی و انتظار می رود. و این یک چالش جالب است که من می خواهم با آن مقابله کنم: اجرای خاتمه SSL خود یا پروکسی معکوس برای اطمینان از اتصال بین CloudFlare و IP یک سرور.

حالت های رمزگذاری SSL/TLS CloudFlare: درک “کامل (سخت)” هنگامی که CloudFlare به عنوان یک پروکسی عمل می کند ، دو اتصال SSL جداگانه برقرار می کند. اول ،مشتری (مرورگر) به CloudFlare

، به طور خودکار توسط گواهی SSL جهانی رایگان CloudFlare برای دامنه و زیر دامنه های سطح اول شما ایمن می شود. شما این را مدیریت نمی کنید. دوم ،CloudFlare به سرور Origin شما (VM/Backend شما)

  • ، به حالت رمزگذاری SSL/TLS انتخاب شده شما بستگی دارد: انعطاف پذیر/کامل:
  • CloudFlare بیش از HTTP ناامن را به هم متصل می کند یا هرگونه گواهی را از منشاء شما می پذیرد. این بدان معنی است که ترافیک بین CloudFlare و سرور شما کاملاً ایمن نیست. کامل (سختگیرانه): این است امن ترین حالت ، جایی که Cloudflare از طریق https وگواهینامه SSL Origin شما را تأیید می کند

بشر برای استفاده از این ، شما باید یک گواهی معتبر و معتبر SSL (مانند Let's Encrypt) را در سرور Origin خود نصب و مدیریت کنید. این کارهای عملیاتی مانند راه اندازی Certbot ، اتوماسیون تجدید و نظارت را دوباره معرفی می کند.Sidenote: CloudFlare همچنین گواهینامه های CA ** Origin CA را ارائه می دهد


، که برای اتصالات Cloudflare به منشی (حداکثر 15 سال) معتبر هستند ، در صورت نیازی به گواهینامه های معتبر عمومی ، مدیریت را ساده می کنید.

این مانند بسیاری از قطعات متحرک برای نظارت در دراز مدت احساس می شود.

و این تنها احتیاط نیست.

ما کاملاً می توانیم از CloudFlare برای اشاره به یک صفحه GitHub یا حتی یک سرور اصلی پس زمینه استفاده کنیم. برای بسیاری از پروژه ها ، ردیف رایگان همه جعبه ها را بررسی می کند.

اما دانستن آنچه من انجام می دهم به شدت به تعامل مکرر ، خودکار ، ماشین به ماشین متکی است-ابزارهای توسعه ، محیط پیش نمایش ، مصرف کنندگان API-من به طور مداوم با محدود کردن نرخ حفاظت DOS محدود می شوم و قوانین فایروال را تغییر می دهم تا سیستم های شخصی من را از بین ببرد.
ممکن است من آن را سرنگون کنم. این هنوز هم می تواند کار کند …
اما من نمی توانم این احساس را تکان دهم: چرا پیچیدگی لایه در بالای پیچیدگی ، فقط برای جلوگیری از پیچیدگی؟

چه می شود اگر من مستقیماً به هسته برش دهم – از پروکسی پرش کنید ، از سکو پرش کنید – و فقط خودم همه چیز را میزبانی کنم؟


بیایید این ایده را کشف کنیم.

DIY + نمونه محاسبه + nginx

از آنجا که مدیریت گواهینامه ها حتی با CloudFlare هنوز در منو بود ، من به مورد بعدی در لیست خود روی آوردم:

خودتان همه چیز را دم کنید. یک نمونه محاسبات ارزان قیمت را بچرخانید ، دامنه خود را پین کنید و از طریق NGINX ترافیک مسیر دهید.

در ابتدا سرگرم کننده به نظر می رسد.

من از ChatGPT برای یک راهنمای Quickstart خواستم ، و در عرض چند ثانیه تمام مراحل و پیکربندی های لازم برای اجرای این تنظیم را داشتم. و اگر قبلاً این کار را کرده اید ، پرچم های قرمز را مشاهده می کنید:

شما اساساً TLD خود را به یک آدرس IP واحد می کشید – آن را به یک نقطه از شکست تبدیل می کنید. اوه ، و فراموش نکنید که آن را ایستا کنید (بله ، باید صریحاً آن را ایستا کنید).

اکنون شما مسئول تأمین امنیت آن سرور هستید-تکه های صفر ، قوانین فایروال و غیره.
شما باید آن را به درستی مدیریت کنید – به روزرسانی ها ، نظارت ، ورود به سیستم ، کل Shebang.

اگر کسی به طور تصادفی آن را حذف کند ، چه می شود؟ چگونه شما حتی “این VM را لمس نکنید” را حتی اجرا می کنید؟

و بهشت ​​منع آن را به دلیل سکسکه صورتحساب خاموش می کند.

که برخی از فلاش بک ها را به وجود آورد. و نکته این است – دیگر 2012 نیست. چرا من هنوز نگران IP های استاتیک ، حذف تصادفی و nginx.conf هستم؟


خوب ، بیایید این ایده را خراش دهیم – چه چیز دیگری روی میز است؟

☁ Google Cloud در این مرحله ، فکر بعدی بعدی این بود:

“در مورد یکی از ارائه دهندگان بزرگ ابر ، مانند Google Cloud؟”

آنها خدمات قوی مدیریت شده ، دسترسی جهانی را ارائه می دهند و مطمئناً زیرساخت هایی برای رسیدگی به ترافیک دارند. و حتی بهتر – آنها از Wildcard SSL خارج از جعبه پشتیبانی می کنند.

اما این ابر است – و این گران است. درست است؟


این است؟

بیایید قیمت گذاری را بررسی کنیم: 1 Google Cloud DNSgoogle_dns_managed_zone(

)

0.20 دلار برای هر منطقه مدیریت شده در هر ماه (برای 25 منطقه اول). نمایش داده شد 0.40 دلار برای هر میلیون دلار. بیایید چیزی مانند 4.3 میلیون پرس و جو برای پرونده ما چیزی مجنون فرض کنیم. 2

Google Compute Global External Https Balancergoogle_compute_global_address( google_compute_url_mapبا google_compute_target_https_proxyبا google_compute_forwarding_ruleبا

  • )قاعده حمل و نقل : 0.025 دلار در ساعت برای 5 قانون اول → (30 × 24 × 24 $ 30 =18 دلار ) x 3 =>
  • 54/ماهداده های پردازش شده توسط Balancer Load

: 0.008 دلار برای GBدر کل ، شما در حال بررسی هزینه های مختلف از تقریباً (این هزینه ها فقط برای مسیریابی است
):

بنابراین بسته به تنظیمات خود ، به دنبال آن هستید:

✅ 20.07 دلار در ماه-با استفاده از رمزگذاری برای صدور و بازسازی خودکار گواهی کارت وحشی از طریق چالش DNS-01 ، به طور معمول با افزونه Certbot + DNS (بدون مسیریابی چند سرویس فانتزی ، فقط یک IP تمام کارها را انجام می دهد-اساسی و کارآمد)

💡 36.34 دلار در ماه – اگر از ترازو بار جهانی برای ترافیک پروکسی به یک IP یا خدمات خارجی استفاده می کنید ، به علاوه Egress Egress (30 گیگابایت پوند)

🧱 50.74 دلار در ماه-برای مسیریابی تنظیم به چند برنامه موتور محاسباتی خاص زیر دامنه


🧱🧱 68.74 دلار در ماه – برای یک صفحه فرود Wildcard + دو برنامه مسیریابی شده در پشت HTTPS LBاگر می خواهید از این متعادل کننده بار به عنوان یک پروکسی استفاده کنید تا بتوانید ترافیک خارج از Google Cloud را به IP عمومی ارائه دهنده دیگر ، برای حجم متوسط ​​ترافیک که در اینجا در نظر گرفته می شود (به عنوان مثال ، 30 گیگابایت در ماه) ، اضافه کنید. 3.60 دلار در ماهدر Google Cloud Egress هزینه های خود ، در کل36.34 دلار/ماه-72،34 دلار در ماه

بشر

هزینه اضافی اضافی ممکن است کاملاً قابل قبول باشد – اما عاملی برای مراقبت از آن است. بسته به ترافیک و اندازه بار ، این می تواند به متغیری تبدیل شود که با اجتناب از اکوسیستم Google ، در مقایسه با هر آنچه که سعی کرده اید ذخیره کنید ، مقایسه کنید.

به خاطر داشته باشید: بسته به اندازه بار ، هزینه های خروج پاسخ API نیز اعمال می شود. برای پاسخ های کوچک و یا کدهای وضعیت ، این هزینه معمولاً ناچیز است-بسته به منطقه ای که انتخاب می کنید ، حدود 1-5 دلار برای 40 گیگابایت ترافیک.


در مقایسه با راه اندازی DIY یا راه حل های CloudFlare ، این اولین گزینه ای است که احساس می کند بدون من می تواند آن را کودک کند.

✨ پس کجا فرود آمدم؟

بعد از صفحات GitHub (خیلی محدود) ، Cloudflare (برای اکثر موارد خوب اما برای اتوماسیون شکننده است) و GCP (قوی اما می تواند پرهزینه باشد) ، DIY در یک نمونه محاسباتی + nginx (بار OPS).

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

این منجر به این نقشه شد:

ردیف 1: بودجه زیر 10 دلار در ماه

CloudFlare (رایگان) مجوز به یک سرور خصوصی مجازی کوچک ، برنامه و صفحه فرود شما را اجرا می کند. مثالها: قطرات اصلی دیجیتال ، هتزنر ، یا نمونه های محاسبات Cloud Vultr.

ردیف 2: زیر 50 دلار در ماه

با استفاده از VPS قدرتمندتر یا اضافه کردن یک راه حل پایگاه داده مدیریت شده ، همان تنظیم را از ردیف 1 مقیاس کنید.

ردیف 3: زیر 100 دلار در ماه

با اضافه کردن چندین نمونه VPS کوچکتر برای افزونگی ، همان تنظیم را از ردیف 1 مقیاس کنید. در این بودجه ، یک بانک اطلاعاتی مدیریت شده به خوبی در دسترس است.

ردیف 4: زیر 150 دلار در ماه

اگر اولویت شما حداقل بار عملیاتی و مقیاس پذیری یکپارچه است ، یک فشارخون مانند GCP بهترین انتخاب است.


این بودجه خدمات واقعاً مدیریت شده آنها را امکان پذیر می کند ، که به شدت نیاز به شما برای رسیدگی به SSL ، تعادل بار و عملیات پایگاه داده را کاهش می دهد. اگر این بودجه بودجه شروع شما است ، برای جلوگیری از مهاجرت های پیچیده یا قفل فروشنده که ممکن است از ابتدا آسانتر باشد ، از اینجا شروع کنید.


و گزینه DIY؟ خوب برای یادگیری یا استقرارهای مقدماتی در مقدمات ، اما اگر می خواهید چیزی را برای استفاده دیگران تحویل دهید و شب کمی بخوابید ، از آن پرش کنید.

با تشکر از شما برای دنبال کردن

هنوز NetLify/Vercel و کلاسیک AWS S3 + Cloudfront وجود دارد که ممکن است برای پرونده خود کاوش کنید.

به طور کلی ، انتخاب یک پشته میزبان هنوز موضوع تجارت ، تحمل شخصی برای OPS و بودجه شما است.

اگر پشته شما در کنار هم قرار گرفته یا موقت احساس مجرای می کند-تبریک می گویم. شما این کار را درست انجام می دهید.

بیایید با هم یاد بگیریم. اگر می خواهید راهنمایی در مورد چگونگی دریافت هر یک از آن ردیف ها و زندگی کنید ، به من در نظرات اطلاع دهید.

برای پایان دادن به این لیست ، لیست چک وعده داده شده است

لیست چک Lo-Live Infra Developer

قبل از ضربه زدن به “پرتاب” ، اطمینان حاصل کنید که:

  1. 🔤 دامنه
  2. دامنه ای را که می توانید با آن زندگی کنید انتخاب کرده است (و در 24 ساعت پشیمان نیست)
  3. از تله های قانونی اجتناب کرد (به عنوان مثال نام شرکت Typos ، مسائل مربوط به علائم تجاری)

انتشار DNS تأیید شده (از ابزارهایی مانند Dig ، NSLookup یا چکرهای آنلاین استفاده کنید)

  1. 🌐 تنظیم DNS
  2. سوابق A/AAAA یا CNAME را به درستی پیکربندی کرده است
  3. تصمیم گرفته شده بین Wildcard DNS (*.example.com) در مقابل سوابق صریح

یک ارائه دهنده DNS را انتخاب کرد (CloudFlare ، Google Cloud DNS ، پیش فرض ثبت نام)

  1. 🔒 SSL / HTTPS
  2. آیا از Let's Encrypt ، CloudFlare Universal SSL یا گواهینامه های مدیریت شده استفاده می کنید؟
  3. آیا به Wildcard SSL احتیاج دارید؟
  4. آیا گواهی شما تمدید می شود؟

نمره SSL را بررسی کرد (از طریق آزمایشگاه های SSL)

  1. 🛠 میزبانی / مادون قرمز
  2. میزبانی استاتیک یا پویا؟ (صفحات Github ، GCP ، Vercel ، DIY؟)
  3. آیا برای محیط های Dev/Demo به مسیریابی زیر دامنه نیاز دارید؟

آیا شما ترافیک پروکسی را معکوس می کنید یا مستقیم می روید؟

  1. 🚦 تعادل بار / محدود کردن نرخ
  2. آیا نیاز به رسیدگی به سنبله های ترافیکی دارید؟ (GCP LB ، Proxy CloudFlare)

آیا محدودیت نرخ بر ابزار داخلی یا اتوماسیون تأثیر می گذارد؟

  1. 🧰 بار بار
  2. چه کسی سرور را لکه دار و به روز می کند؟
  3. چه کسی نظارت ، هشدارها و سیاهههای مربوط را انجام می دهد؟

آیا پشتیبان گیری یا عکس های فوری وجود دارد؟

  1. 💸 آگاهی هزینه
  2. هزینه های ثابت در مقابل متغیر شما چیست؟ (DNS ، SSL ، Egress)
  3. پهنای باند یا هزینه گواهی غافلگیرانه؟

آیا راه اندازی فعلی شما در مقیاس پایدار است؟

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا