Kirish jurnalidagi har bir satr bir xil loopback manzilini ko'rsatadi, holbuki sahifa o'zi yuklanadi va sertifikat to'g'ri tekshiriladi. Yetib bo'lmaydiganlik ma'nosida hech narsa buzilmagan va shuning uchun bu holat oylab davom etadi. Buzilgan narsa — tegishlilik: veb-bekend ulanishni yo'naltirgan sakrash manzilini yozadi va jurnalga ishongan har bir keyingi qaror o'sha noto'g'ri javobni meros oldi.

Quyidagi tekshiruvlar kabeldan ichkariga qarab boradi. Ko'rayotgan qiymatingizni tushuntiruvchi birinchi tekshiruvda to'xtang, chunki har bir keyingi qadam oldingilari allaqachon to'g'ri deb hisoblaydi. Ularning hech biri frontend konfiguratsiyasini taxmin qilishni talab qilmaydi.

Jurnal satrini emas, ikkita ulanishni kuzatib boring

Port-Share bitta TCP tinglovchisida ikkita protokolni multiplekslaydi. OpenVPN kiruvchi ulanishning birinchi baytlarini tekshiradi, o'z protokoliga o'xshasa uni saqlab qoladi, qolgan hamma narsani ikkinchi manzilga uzatadi. Bu manzil odatda o'sha xostdagi veb-server, shuning uchun veb-server qabul qilgan soketning jufti OpenVPN jarayoni bo'ladi.

ss -ltnp 'sport = :443'
ss -tnp 'dport = :8080'

Birinchi buyruq ommaviy tinglovchi kimga tegishli ekanini ko'rsatadi. Ikkinchisi bekend portiga keladigan ulanishlarni ko'rsatadi va ularning juft manzili kirish jurnali chop etadigan manzildir. Agar bu juft loopback bo'lsa, jurnal aniq va ma'lumot bir qatlam oldin yo'qolgan. Jurnal maydoni nomini o'zgartirish yoki mijoz IP modulini yoqish ulanish hech qachon olib yurmagan manzilni qaytarmaydi.

Bu qolgan hamma narsani hal qiladigan tekshiruv. Agar bekendning jufti brauzer manzili bo'lsa, portni bo'lishish sizning muammoingiz emas va jurnal formati muammo.

Transport yo'naltirish sarlavha in'ektsiyasi emas

Yo'naltiruvchi baytlarni siljitadi. U HTTPni tahlil qilmaydi, shuning uchun hech qachon so'rov sifatida o'qimagan so'rovga sarlavha kirita olmaydi va tegmastan o'tkazadigan TLS oqimiga hech narsa qo'sha olmaydi. Proksi sarlavhasini kutayotgan modul hech bir komponent ishlab chiqarmaydigan sarlavhani kutishda davom etadi.

Asl manzilni ikkita mexanizm olib yurishi mumkin va ikkalasi ham ikki uchda kelishuvni talab qiladi. PROXY protokoli ulanish boshiga kichik sarlavha qo'shadi va bekend uni kutishga sozlangan bo'lishi kerak; kutmaydigan bekend bu baytlarni so'rovning boshlanishi deb qabul qiladi va chalkash tarzda muvaffaqiyatsizlikka uchraydi. X-Forwarded-For kabi ishonchli proksi sarlavhalari HTTPni tushunadigan proksi ularni o'rnatganda va bekendga qaysi juftlar ularni tasdiqlashi mumkinligi aytilganda ishlaydi.

Ikkalasi ham avtomatik emas va ikkalasi ham standart bo'yicha xavfsiz emas. Har qanday kiruvchi yo'naltirilgan sarlavhaga ishonadigan bekend mijozga o'z manzilini tanlashga ruxsat beradi, bu jurnaldagi noaniqlikni kirishni nazorat qilishdan chetlab o'tishga aylantiradi. Ishlab chiqarish yo'lida biron sarlavhaga ishonishdan oldin namoyishni sinov xostida bir marta ishga tushiring.

curl -sS -H 'X-Forwarded-For: 127.0.0.1' https://site.example.com/health
grep -F '127.0.0.1' /var/log/nginx/access.log | tail -n 3

Ixtiyoriy manba xaritasini solishtirish katalogi

Portni bo'lishishning ixtiyoriy katalog argumenti bor, u xususiyat joriy etilgan platformalarda asl manba manzili va yo'naltirish ulanishi o'rtasidagi xaritani yozadi. Veb tomon bu xaritaga murojaat qilishi kutiladi; bu sarlavha emas va so'rovga kiritilmaydi.

Bu dizayn bilishga arziydi, chunki u tashqaridan bir xil frontend konfiguratsiyasi bilan ba'zi joylashtirishlar haqiqiy manzillarni bildirishi, ba'zilari esa yo'qligini tushuntiradi. Farq qabul qiluvchi tomonda va odatda paketlangan veb-serverlarning ko'pchiligi standart bo'yicha yoqmaydigan modul yoki yamoqda yashaydi. Veb-serveringiz hujjatlarida u taklif qiladigan aniq ilgakni o'qing va modul yuklanganini taxmin qilish o'rniga tasdiqlang.

Agar bu yo'lni tanlasangiz, uni ikki yarmdan iborat integratsiya deb qarang: yo'naltiruvchi yozadigan xarita va bekend qiladigan qidiruv. Ikkalasini tekshiring va katalog qayta ishga tushirishdan keyin ham saqlanishini hamda band tinglovchida cheksiz o'smasligini tasdiqlang.

Manzilga qaysi komponent kafolat berishini hal qiling

Konfiguratsiyani o'zgartirishdan oldin mijoz manzilini tasdiqlashga ruxsat berilgan komponentni va unga ishonishga ruxsat berilgan komponentlarni nomlang. Bitta yozma javob uch xil qatlam har biri boshqa manbaga ishonadigan odatiy chetlanishning oldini oladi.

Uchta dizayn ko'p ehtiyojlarni qoplaydi. Ommaviy tinglovchi va veb-tinglovchini alohida saqlang, shunda veb-server haqiqiy juftlarni ko'radi va tegishlilik muammosi bo'lmaydi. Oldiga HTTPni tushunadigan teskari proksi qo'ying, so'rovni o'sha yerda tugating yoki tahlil qiling va faqat shu proksiga ishonadigan bekend uchun yo'naltirilgan sarlavhani o'rnatishga ruxsat bering. Yoki portni bo'lishishni saqlab qoling va jurnallar sakrashni ko'rsatishini qabul qiling, kirish qoidalari manzilga emas, ilova identifikatsiyasiga qarshi yoziladi.

Ishlamaydigan narsa — yo'naltirilgan loopback manzilini so'rov shu mashinada paydo bo'lganiga dalil deb qabul qilish. Bu xulosa aynan teskari: manzil aynan mahalliy komponent ulanish yaratgani uchun mavjud. Shu tarzda yozilgan qoida tinglovchiga yetib bora oladigan har kimni qabul qiladi.

Qoidani sinang, sahifani emas

Yuklanadigan sahifa yo'naltirish yo'li ishlashini isbotlaydi va tegishlilik haqida hech narsa demaydi. Manzil iste'molchisini sinang: kirish qoidasi, tezlik chegarasi, audit yozuvi, geografik qidiruv.

curl -sS -o /dev/null -w '%{http_code}\n' https://site.example.com/
tail -n 5 /var/log/nginx/access.log
grep -c '' /var/log/nginx/access.log

Ruxsat etilgan tashqi so'rovni frontend va bekend ikkala yozuvlari bilan solishtiring va rad etishi kerak bo'lgan qoida hali ham rad etishini, ruxsat berishi kerak bo'lgan qoida hali ham ruxsat berishini tasdiqlang. Agar jurnal satri to'g'ri bo'lsa-yu, qoida hali ham hammani mahalliy deb tutsa, qoida siz tuzatgan maydondan boshqa maydonni o'qiydi.

Joylashtirish eslatmalariga tegishlilik zanjirini yozib yakunlang: qaysi tinglovchi, qaysi yo'naltiruvchi, qaysi sarlavha yoki xarita va qaysi bekend unga ishonishga sozlangan. Jurnal satrini o'qiydigan keyingi odamga to'rttasi ham kerak bo'ladi va o'sha eslatmaning yo'qligi bir yildan keyin o'sha chiptaning qayta ochilishiga sabab. Uni chat oqimida emas, konfiguratsiya yonida saqlang.

O'xshash maqolalar