همهٔ موضوعات ←نوشتههای با برچسب Nginx
۵۰ نوشته، از تازهترین به قدیمیترین.
۰۱
انجیناکس؛ شب ۹: لاگ درخواست، reload و عیبیابیوقتی سایت باز نمیشود باید تشخیص بدهیم خطا از listener، انتخاب سایت، مسیر فایل یا برنامه است. امشب لاگ را با پاسخ واقعی مرتبط میکنیم.
۲ دقیقه مطالعه
Nginx ←۰۲
انجیناکس؛ شب ۸: مجوز فایل، کاربر کارگر و SELinux403 همیشه یک علت ندارد. امشب policy وب، دسترسی لینوکس و label امنیتی را جدا میسنجیم تا مشکل با chmod گسترده پنهان نشود.
۲ دقیقه مطالعه
Nginx ←۰۳
انجیناکس؛ شب ۷: انتخاب location، root، alias و try_filesبیشتر خطاهای مسیریابی از تصور نادرست دربارهٔ location میآیند. امشب URL را تا مسیر فایل دنبال میکنیم و precedence یا ترتیب اولویت را با مثال میسنجیم.
۲ دقیقه مطالعه
Nginx ←۰۴
انجیناکس؛ شب ۶: چند سایت و default_serverنام ناشناس هم باید رفتار مشخصی داشته باشد. امشب سایت دوم و یک server پیشفرض محدود میسازیم تا ترتیب فایلها بهطور اتفاقی محتوای سایت اصلی را منتشر نکند.
۲ دقیقه مطالعه
Nginx ←۰۵
انجیناکس؛ شب ۵۰: پروژهٔ نهایی، آزمون خرابی و تحویل دورهپایان دوره یک config بزرگ قابل کپی نیست؛ مجموعهای از سرویسها و شواهد است که توضیح میدهد درخواست از کجا میآید، چه چیزی به آن اعتماد میکند و در خرابی چه رفتاری میبینیم.
۳ دقیقه مطالعه
Nginx ←۰۶
انجیناکس؛ شب ۵: اولین server block مستقلServer block تنظیمات سایت را بر اساس آدرس، پورت و نام جدا میکند. امشب www.nginx.test را با محتوای خودمان و لاگ مستقل راه میاندازیم.
۲ دقیقه مطالعه
Nginx ←۰۷
انجیناکس؛ شب ۴۹: اصلاح یافتههای ممیزی و آزمون بازگشتهر یافتهٔ audit باید به تغییر قابل بررسی تبدیل شود. امشب یکی از موارد نامطابق واقعی را اصلاح میکنیم، اثر آن بر برنامه را میسنجیم و استثنای لازم را با دلیل ثبت میکنیم.
۳ دقیقه مطالعه
Nginx ←۰۸
انجیناکس؛ شب ۴۸: ممیزی فقطخواندنی بر پایهٔ CIS NGINXممیزی باید نشان دهد کدام الزام، در کدام نسخه و با چه شاهدی بررسی شده است. امشب شواهد Nginx را بدون تغییر سرویس جمع میکنیم و مرز بررسی دستی و scanner را روشن میکنیم.
۳ دقیقه مطالعه
Nginx ←۰۹
انجیناکس؛ شب ۴۷: سختسازی Nginx، فایلها و سرویسسختسازی یعنی سطح دسترسی و قابلیتها با نقش واقعی سرویس هماهنگ شود. امشب فایل، شبکه، module و systemd را محدود میکنیم و سالم ماندن HTTP، PHP و stream را میسنجیم.
۳ دقیقه مطالعه
Nginx ←۱۰
انجیناکس؛ شب ۴۶: TLS passthrough، SNI و PROXY protocolدر TLS passthrough، Nginx stream گواهی را باز نمیکند؛ بر پایهٔ اطلاعات ClientHello مسیر اتصال را انتخاب میکند. امشب آن را با TLS termination و انتقال IP مقایسه میکنیم.
۳ دقیقه مطالعه
Nginx ←۱۱
انجیناکس؛ شب ۴۵: پراکسی UDP با echo خصوصی و timeout مشخصUDP handshake و پایان اتصال TCP را ندارد. امشب با یک echo کوچک، تعداد پاسخ و timeout session را بررسی میکنیم؛ آزمایشگاه به DNS resolver عمومی تبدیل نمیشود.
۳ دقیقه مطالعه
Nginx ←۱۲
انجیناکس؛ شب ۴۴: پراکسی TCP، توزیع اتصال و IP ACLپراکسی TCP بایتهای یک اتصال را به backend منتقل میکند. امشب دو backend آزمایشگاهی را پشت یک پورت میگذاریم و تفاوت توزیع اتصال با توزیع درخواست HTTP را میبینیم.
۲ دقیقه مطالعه
Nginx ←۱۳
انجیناکس؛ شب ۴۳: nginx-full، ماژول stream و context درستstream در Nginx برای پراکسی TCP و UDP است. این کاربرد با نمایش ویدئو یا HTTP streaming فرق دارد؛ قبل از تنظیم پورت باید ماژول و جای بلوک stream را درست بشناسیم.
۳ دقیقه مطالعه
Nginx ←۱۴
انجیناکس؛ شب ۴۲: درخواست، health check و ارتقای کانتینربالا بودن فرایند Nginx تضمین نمیکند backend سالم است. امشب وضعیت فرایند، مسیر واقعی درخواست، rollout و rollback را با artifact مشخص جداگانه بررسی میکنیم.
۳ دقیقه مطالعه
Nginx ←۱۵
انجیناکس؛ شب ۴۱: TLS، رازها و اعتماد در ورودی کانتینرTLS میتواند در Nginx میزبان یا در frontend کانتینری خاتمه یابد. امشب هر دو مسیر را روشن میکنیم و دسترسی کلید خصوصی را به فرایند لازم محدود میکنیم.
۳ دقیقه مطالعه
Nginx ←۱۶
انجیناکس؛ شب ۴۰: Compose، شبکهٔ خصوصی و تغییر IP backendدر کانتینر، localhost همان کانتینر است. امشب frontend به نام سرویس backend متصل میشود و با تغییر IP آن، درخواستهای جدید همچنان مسیر درست را پیدا میکنند.
۳ دقیقه مطالعه
Nginx ←۱۷
انجیناکس؛ شب ۴: contextها، Include و ماژولهاdirective درست در context اشتباه قابل استفاده نیست. امشب ساختار config را میخوانیم تا تنظیم HTTP، stream و بارگذاری ماژول با هم مخلوط نشوند.
۲ دقیقه مطالعه
Nginx ←۱۸
انجیناکس؛ شب ۳۹: اجرای Nginx در کانتینر با کاربر محدودکانتینر پیکربندی و فرایند Nginx را بستهبندی میکند، ولی trust و امنیت میزبان همچنان اهمیت دارند. امشب یک سایت ساده را با filesystem فقطخواندنی و worker بدون root اجرا میکنیم.
۳ دقیقه مطالعه
Nginx ←۱۹
انجیناکس؛ شب ۳۸: تنظیم false positive بدون خاموش کردن WAFوقتی یک فرم سالم مسدود میشود، باید بفهمیم کدام rule و کدام پارامتر سبب آن شده است. امشب استثنا را تا یک مسیر، پارامتر و شناسه محدود میکنیم و کارکرد قواعد دیگر را دوباره میسنجیم. …
۳ دقیقه مطالعه
Nginx ←۲۰
انجیناکس؛ شب ۳۷: OWASP CRS از DetectionOnly تا مسدودسازیOWASP CRS مجموعهای از قواعد عمومی تشخیص حمله است. ابتدا ثابت میکنیم موتور درخواست را میبیند، سپس قواعد CRS و مسیر عبور ترافیک سالم را بررسی میکنیم.
۳ دقیقه مطالعه
Nginx ←۲۱
انجیناکس؛ شب ۳۶: ساخت موتور و ماژول ModSecurity در cloneوقتی بستهٔ سازگار نداری، ساخت ماژول نیازمند artifact قابل بازتولید است. امشب موتور و connector را در clone میسازیم و فقط ماژول را برای Nginx موجود نصب میکنیم.
۳ دقیقه مطالعه
Nginx ←۲۲
انجیناکس؛ شب ۳۵: ModSecurity، connector و سازگاری بستههاModSecurity یک دیوارهٔ آتش برنامهٔ وب یا WAF است: درخواست HTTP را با مجموعهٔ قواعد بررسی میکند. برای Nginx، موتور، connector و قواعد سه جزء جدا هستند؛ نصب یک بسته الزاماً همهٔ …
۳ دقیقه مطالعه
Nginx ←۲۳
انجیناکس؛ شب ۳۴: backup قابل بازیابی، cron و استقرار WordPressbackup زمانی مفید است که بازیابی آن کار کند. امشب database، uploads، کد و تنظیمات را به یک مجموعهٔ سازگار تبدیل میکنیم و اجرای زمانبندیشدهٔ WordPress را از ترافیک سایت جدا …
۳ دقیقه مطالعه
Nginx ←۲۴
انجیناکس؛ شب ۳۳: اعتماد HTTPS، ظرفیت FPM و خطر cache خصوصیWordPress پشت یک پراکسی دیگر ممکن است HTTPS را اشتباه تشخیص دهد یا پاسخ خصوصی را cache کند. امشب مرز اعتماد و ظرفیت پردازش PHP را با آزمون مشخص میکنیم.
۴ دقیقه مطالعه
Nginx ←۲۵
انجیناکس؛ شب ۳۲: server block کامل WordPress و جلوگیری از اجرای uploadNginx فایل PHP را اجرا نمیکند؛ مسیر درست فایل را با FastCGI به PHP-FPM میفرستد. امشب WordPress، permalink و رسانه را فعال میکنیم و اجرای فایل بارگذاریشده را میبندیم.
۳ دقیقه مطالعه
Nginx ←۲۶
انجیناکس؛ شب ۳۱: WordPress، پایگاه داده و مالکیت کدWordPress را با پایگاه دادهٔ اختصاصی آماده میکنیم. PHP باید بتواند تنظیمات را بخواند و رسانه بارگذاری کند، اما به تغییر هسته و همهٔ فایلها دسترسی نخواهد داشت.
۳ دقیقه مطالعه
Nginx ←۲۷
انجیناکس؛ شب ۳۰: PHP-FPM روی AlmaLinux و Rocky Linuxدر شاخهٔ RHEL نام سرویس و مسیر socket فرق دارد. امشب pool مستقل را با stream مناسب PHP میسازیم، بدون تغییر کور نصب موجود.
۲ دقیقه مطالعه
Nginx ←۲۸
انجیناکس؛ شب ۳: نصب Nginx روی AlmaLinux و Rocky Linuxدر خانوادهٔ RHEL، مسیر سایت و کاربر سرویس با Debian فرق دارد. امشب Nginx را با SELinux فعال نصب میکنیم و فرضهای شاخهٔ خودمان را ثبت میکنیم.
۲ دقیقه مطالعه
Nginx ←۲۹
انجیناکس؛ شب ۲۹: PHP-FPM و socket روی Debian و UbuntuNginx خودش PHP اجرا نمیکند؛ درخواست را با FastCGI به PHP-FPM میدهد. امشب حساب مستقل WordPress و pool محدود را پیش از انتشار برنامه آماده میکنیم.
۲ دقیقه مطالعه
Nginx ←۳۰
انجیناکس؛ شب ۲۸: برنامهٔ پایدار با systemd پشت Nginxbackend وابسته به ترمینال برای بهرهبرداری مناسب نیست. امشب یک برنامهٔ WSGI، یعنی قرارداد اجرای وب پایتونی، را با حساب مستقل و Gunicorn راه میاندازیم.
۲ دقیقه مطالعه
Nginx ←۳۱
انجیناکس؛ شب ۲۷: SSE، buffering و پاسخ جریانیSSE یا رویدادهای ارسالی سرور، پیام را یکطرفه روی HTTP میفرستد. امشب تفاوت انتظار backend و تأخیر ناشی از buffering را اندازه میگیریم.
۲ دقیقه مطالعه
Nginx ←۳۲
انجیناکس؛ شب ۲۶: WebSocket و تبادل واقعی پیامWebSocket پس از handshake یک ارتباط دوطرفهٔ طولانی میسازد. امشب echo server را از wss منتشر میکنیم و تنها به دریافت کد 101 اکتفا نمیکنیم.
۲ دقیقه مطالعه
Nginx ←۳۳
انجیناکس؛ شب ۲۵: upstream، توزیع بار و خرابی عضودو backend ظرفیت و امکان ادامهٔ سرویس میدهند، ولی وضعیت نشست و عملیات نیمهتمام خودکار حل نمیشود. امشب توزیع درخواست و failover را با شواهد بررسی میکنیم.
۲ دقیقه مطالعه
Nginx ←۳۴
انجیناکس؛ شب ۲۴: TLS معتبر تا backendTLS ورودی مسیر تا backend را خودکار محافظت نمیکند. امشب ارتباط HTTPS داخلی را با بررسی نام و CA فعال میکنیم و شکست هویت را بهصورت عمدی آزمایش میکنیم.
۲ دقیقه مطالعه
Nginx ←۳۵
انجیناکس؛ شب ۲۳: زیرمسیر، هدرها، redirect و cookieبرنامهٔ ریشه همیشه زیر /service/ سالم کار نمیکند. امشب معنای slash در proxy_pass، هدرهای forwarded و اطلاعات بازگشتی را جدا بررسی میکنیم.
۲ دقیقه مطالعه
Nginx ←۳۶
انجیناکس؛ شب ۲۲: اولین برنامه پشت پراکسی معکوسNginx میتواند ورودی عمومی و TLS را مدیریت کند و برنامه فقط روی loopback پاسخ بدهد. امشب این جداسازی را با backend قابل تشخیص میسازیم.
۲ دقیقه مطالعه
Nginx ←۳۷
انجیناکس؛ شب ۲۱: محدودیت همزمانی، body و اتصال کندنرخ درخواست با تعداد درخواستهای همزمان یکی نیست. امشب اتصالهای فعال، اندازهٔ ورودی و زمان خواندن را جدا محدود میکنیم.
۲ دقیقه مطالعه
Nginx ←۳۸
انجیناکس؛ شب ۲۰: rate limit درخواست با dry runمیخواهیم تعداد درخواست سریع هر مبدأ را کنترل کنیم، بدون آنکه ابتدا رفتار کاربران را حدس بزنیم. امشب zone، burst و حالت مشاهده را با پاسخ واقعی آزمایش میکنیم.
۲ دقیقه مطالعه
Nginx ←۳۹
انجیناکس؛ شب ۲: نصب Nginx روی Debian و Ubuntuبستهٔ نصبشده، سرویس فعال و سایت قابل دسترس سه وضعیت متفاوتاند. امشب نصب را در شاخهٔ Debian انجام میدهیم و هر سه را بررسی میکنیم.
۲ دقیقه مطالعه
Nginx ←۴۰
انجیناکس؛ شب ۱۹: mTLS و گواهی کلاینتTLS معتبر هویت سرور را میسنجد؛ mTLS هویت کلاینت را هم وارد handshake میکند. امشب یک میزبان خصوصی با گواهی کلاینت و محدودیت IP میسازیم.
۲ دقیقه مطالعه
Nginx ←۴۱
انجیناکس؛ شب ۱۸: IP واقعی و مرز اعتماد به پراکسیوقتی Nginx پشت edge باشد، مبدأ اتصال خود edge است. امشب فقط به یک همتای مشخص اجازه میدهیم IP کلاینت را اعلام کند؛ این تصمیم روی allowlist و rate limit اثر دارد.
۲ دقیقه مطالعه
Nginx ←۴۲
انجیناکس؛ شب ۱۷: محدودیت IP و احراز هویت همزمانبرای بخش مدیریتی، IP مجاز و کاربر معتبر را با هم میخواهیم. امشب allow/deny و satisfy را با درخواست واقعی از دو کلاینت بررسی میکنیم.
۲ دقیقه مطالعه
Nginx ←۴۳
انجیناکس؛ شب ۱۶: فشردهسازی و cache فایل ثابتcache مناسب ترافیک را کم میکند؛ cache پاسخ شخصی میتواند داده را افشا کند. امشب فقط داراییهای ثابت را تنظیم میکنیم و نوع محتوا و رفتار gzip را میسنجیم.
۲ دقیقه مطالعه
Nginx ←۴۴
انجیناکس؛ شب ۱۵: هدرهای امنیتی، ارثبری و CSPهدر صحیح اگر در location فرزند حذف شود، حفاظت موردنظر را نمیدهد. امشب ارثبری add_header و سیاست محتوا را با پاسخ موفق و خطا بررسی میکنیم.
۲ دقیقه مطالعه
Nginx ←۴۵
انجیناکس؛ شب ۱۴: سیاست TLS، HTTP/2 و HSTSHTTP/2 چند جریان درخواست را روی یک اتصال حمل میکند. امشب آن را با نحو سازگار نسخه فعال و سیاست TLS و HSTS را با امکان بازگشت تنظیم میکنیم.
۲ دقیقه مطالعه
Nginx ←۴۶
انجیناکس؛ شب ۱۳: گواهی عمومی، ACME و تمدیدCA محلی برای دامنهٔ عمومی اعتماد ایجاد نمیکند. امشب صدور و تمدید را روی دامنهای متعلق به خودمان طراحی میکنیم؛ این شاخه روی .test اجرا نمیشود.
۲ دقیقه مطالعه
Nginx ←۴۷
انجیناکس؛ شب ۱۲: HTTPS، SNI و ورودی ناشناسگواهی آماده است؛ اکنون آن را روی سایت نصب میکنیم و انتخاب گواهی را از انتخاب Host در HTTP جدا میسنجیم.
۲ دقیقه مطالعه
Nginx ←۴۸
انجیناکس؛ شب ۱۱: گواهی آزمایشگاهی و نام معتبربرای تمرین HTTPS نباید بررسی اعتماد را خاموش کنیم. امشب یک CA محلی، یعنی مرجع صدور گواهی، میسازیم و گواهی با نامهای واقعی lab صادر میکنیم.
۲ دقیقه مطالعه
Nginx ←۴۹
انجیناکس؛ شب ۱۰: redirect، rewrite و query stringانتقال نشانی قدیمی با مسیریابی داخلی برنامه متفاوت است. امشب redirect را بدون ساختن حلقه یا اعتماد به Host ورودی پیاده میکنیم.
۲ دقیقه مطالعه
Nginx ←۵۰
انجیناکس؛ شب ۱: آزمایشگاه و مسیر یک درخواستهدف این دوره ساخت چند سرویس وب با ورودی قابل کنترل است. امشب آزمایشگاهی میسازیم که بتوان در آن درخواست مجاز، درخواست نامجاز و خرابی backend را جدا دید.
۲ دقیقه مطالعه
Nginx ←