{"id":2125,"date":"2026-06-01T10:12:00","date_gmt":"2026-06-01T09:12:00","guid":{"rendered":"https:\/\/jalvo.eu\/reverse-proxy-kiedy-pomaga-kiedy-zakrywa-problem\/"},"modified":"2026-06-01T10:12:00","modified_gmt":"2026-06-01T09:12:00","slug":"reverse-proxy-kiedy-pomaga-kiedy-zakrywa-problem","status":"publish","type":"post","link":"https:\/\/jalvo.eu\/pl\/reverse-proxy-kiedy-pomaga-kiedy-zakrywa-problem\/","title":{"rendered":"Kiedy reverse proxy jest dobrym rozwi\u0105zaniem, a kiedy zakrywa problem"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ma\u0142o kt\u00f3ry element infrastruktury trafia do wdro\u017cenia tak bezrefleksyjnie jak reverse proxy. Pojawia si\u0119 w pierwszym sprincie nowego wdro\u017cenia, przejmuje certyfikat TLS, dostaje jedn\u0105 regu\u0142\u0119 routingu, a potem przez lata po cichu zbiera kolejne dyrektywy. Wi\u0119kszo\u015b\u0107 z nich to rozs\u0105dne decyzje infrastrukturalne. Cz\u0119\u015b\u0107 to blizny: obej\u015bcie, kt\u00f3re kto\u015b napisa\u0142 o trzeciej w nocy, \u017ceby uciszy\u0107 alert, i do kt\u00f3rego nikt nie wr\u00f3ci\u0142, gdy tylko presja opad\u0142a. Odr\u00f3\u017cnienie jednego od drugiego to jeden z bardziej op\u0142acalnych audyt\u00f3w, jakie mo\u017ce przeprowadzi\u0107 zesp\u00f3\u0142 in\u017cynierski, bo proxy, kt\u00f3re ukrywa usterki, b\u0119dzie je ukrywa\u0107 do momentu, a\u017c popsuje si\u0119 co\u015b wi\u0119kszego.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Co reverse proxy naprawd\u0119 robi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli odrzuci\u0107 \u017cargon, reverse proxy jest po\u015brednikiem. Ko\u0144czy po\u0142\u0105czenie klienta i otwiera w\u0142asne po\u0142\u0105czenie do jednej lub kilku us\u0142ug upstream. Klient my\u015bli, \u017ce rozmawia z twoj\u0105 aplikacj\u0105. Rozmawia z programem, kt\u00f3ry decyduje, gdzie \u017c\u0105danie pow\u0119druje dalej. Forward proxy stoi po stronie klienta i reprezentuje ruch wychodz\u0105cy u\u017cytkownik\u00f3w. Load balancer rozk\u0142ada ruch na r\u00f3wnorz\u0119dne backendy. API gateway dok\u0142ada uwierzytelnianie, limity i kwestie schematu. Implementacje mocno si\u0119 pokrywaj\u0105 - ta sama binarka cz\u0119sto pe\u0142ni kilka z tych r\u00f3l naraz - ale intencja jest inna, a mieszanie intencji to prosta droga do konfiguracji, kt\u00f3rej nikt nie umie przeczyta\u0107.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zestaw podstawowych funkcji jest niewielki i niewiele si\u0119 zmieni\u0142: terminacja TLS, routing \u017c\u0105da\u0144 po ho\u015bcie lub \u015bcie\u017cce, przepisywanie nag\u0142\u00f3wk\u00f3w, pula po\u0142\u0105cze\u0144 do upstreamu, buforowanie odpowiedzi i cache. Jakiekolwiek oprogramowanie wstawisz w to miejsce, zajmuje ono t\u0119 sam\u0105 pozycj\u0119 w architekturze. A pozycja ta sta\u0142a si\u0119 domy\u015blnym pierwszym przystankiem, bo prawie ka\u017cde wdro\u017cenie pr\u0119dzej czy p\u00f3\u017aniej potrzebuje co najmniej dw\u00f3ch z tych funkcji, a nikt nie chce budowa\u0107 ich po raz drugi w kodzie aplikacji. Je\u015bli konfigurujesz je od zera, <a href=\"https:\/\/jalvo.eu\/pl\/revproxy-instrukcja\/\">instrukcja krok po kroku<\/a> oszcz\u0119dza odkrywania tych samych ustawie\u0144 domy\u015blnych metod\u0105 pr\u00f3b i b\u0142\u0119d\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sytuacje, w kt\u00f3rych reverse proxy jest w\u0142a\u015bciwym narz\u0119dziem<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Terminacja TLS w jednym miejscu to argument najmocniejszy, bezdyskusyjnie. Certyfikaty, polityka szyfr\u00f3w i automatyczne odnawianie \u017cyj\u0105 poza kodem aplikacji, wi\u0119c aktualizacja \u015brodowiska uruchomieniowego j\u0119zyka nigdy nie zagrozi konfiguracji handshake&#8217;u. Drugi to serwowanie kilku aplikacji spod jednego publicznego adresu i portu, z routingiem po nazwie hosta albo prefiksie. Trzeci, niedoceniany, to buforowanie: backend przywi\u0105zany do w\u0105tku lub procesu, zaj\u0119ty przez klienta s\u0105cz\u0105cego bajty przez po\u0142\u0105czenie kom\u00f3rkowe, to zmarnowana moc przerobowa, a po\u015brednik, kt\u00f3ry przyjmie na siebie wolnego klienta, oddaje t\u0119 moc z powrotem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Poza tym proxy nie budzi kontrowersji w takich sytuacjach:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Zasoby statyczne, \u017c\u0105dania zakresu bajt\u00f3w i kompresja, obs\u0142ugiwane przez oprogramowanie napisane specjalnie do tego<\/li>\n<li>Wdro\u017cenia blue-green i canary, kt\u00f3re prze\u0142\u0105czaj\u0105 ruch bez ruszania logiki aplikacji<\/li>\n<li>Wygaszanie trwaj\u0105cych po\u0142\u0105cze\u0144 podczas wdro\u017cenia, \u017ceby nikt nie zobaczy\u0142 zerwanej sesji<\/li>\n<li>Limitowanie ruchu i polityka dost\u0119pu na poziomie IP, kt\u00f3ra musi zadzia\u0142a\u0107 przed uruchomieniem jakiegokolwiek kodu<\/li>\n<li>Zebranie log\u00f3w dost\u0119pu z r\u00f3\u017cnorodnych us\u0142ug w jednym miejscu<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Wskaz\u00f3wka:<\/strong> trzymaj konfiguracj\u0119 proxy w tym samym repozytorium i tym samym procesie przegl\u0105du co kod aplikacji. Konfiguracja, kt\u00f3ra omija przegl\u0105d, to konfiguracja, kt\u00f3rej nikt nie pami\u0119ta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Maskowanie objaw\u00f3w: proxy jako \u015brodek przeciwb\u00f3lowy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Oto antywzorzec, kt\u00f3ry widuj\u0119 raz za razem. Endpoint zwalnia, wi\u0119c kto\u015b podnosi timeout odczytu na proxy. Alert milknie. W rzeczywisto\u015bci szybka i czytelna awaria zamieni\u0142a si\u0119 w d\u0142ugie zawieszenie, a ka\u017cdy klient trzyma teraz otwarte po\u0142\u0105czenie znacznie d\u0142u\u017cej, podczas gdy wolne zapytanie le\u017cy sobie nietkni\u0119te. Ponawianie skonfigurowane na warstwie proxy tylko pogarsza spraw\u0119: i tak ju\u017c przeci\u0105\u017cony upstream dostaje zdublowany ruch, a w sprzyjaj\u0105cych warunkach wolumen ponowie\u0144 zaczyna si\u0119 sam nap\u0119dza\u0107.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na szczeg\u00f3ln\u0105 nieufno\u015b\u0107 zas\u0142uguje cache. Zakeszowanie odpowiedzi, kt\u00f3ra jest zepsuta albo niedeterministyczna, nie naprawia jej. Sprawia tylko, \u017ce usterka wychodzi wy\u0142\u0105cznie przy chybieniu cache&#8217;a, a trudniej odtwarzalnego profilu b\u0142\u0119du raczej nie ma. Przepisywanie nag\u0142\u00f3wk\u00f3w i \u015bcie\u017cek, kt\u00f3re kompensuje generowanie z\u0142ych adres\u00f3w przez aplikacj\u0119, przenosi b\u0142\u0105d z miejsca obj\u0119tego testami do miejsca bez test\u00f3w. Buforowanie potrafi ukry\u0107 backend \u017ale obs\u0142uguj\u0105cy strumieniowanie - dok\u0142adnie do chwili, gdy \u0142adunek przekroczy rozmiar bufora i zachowanie zmieni si\u0119 bez \u017cadnego ostrze\u017cenia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jak odr\u00f3\u017cni\u0107 napraw\u0119 od plastra<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Trzy pytania oddzielaj\u0105 realn\u0105 polityk\u0119 infrastrukturaln\u0105 od zamiatania pod dywan. Zadaj je, zanim jakakolwiek zmiana w proxy trafi do ga\u0142\u0119zi g\u0142\u00f3wnej.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Czy zmiana dotyka tylko obserwowanego zachowania, czy samej przyczyny?<\/strong> Je\u015bli backend nadal robi co\u015b \u017ale, a klient po prostu przestaje to zauwa\u017ca\u0107, masz plaster.<\/li>\n<li><strong>Czy usuni\u0119cie tej dyrektywy natychmiast przywr\u00f3ci\u0142oby pierwotn\u0105 awari\u0119?<\/strong> Uczciwe \u201etak&#8221; oznacza, \u017ce dyrektywa jest no\u015bna dla usterki, a nie dla architektury.<\/li>\n<li><strong>Czy to decyzja polityczna, czy obej\u015bcie?<\/strong> Minimalna wersja TLS, limity ruchu i maksymalny rozmiar tre\u015bci to polityka. Timeout podniesiony pod jeden endpoint ju\u017c nie.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Wskaz\u00f3wka:<\/strong> ka\u017cdej dyrektywie b\u0119d\u0105cej obej\u015bciem przypisz w\u0142a\u015bciciela i warunek usuni\u0119cia, a nie sam\u0105 dat\u0119. Daty mijaj\u0105 po cichu, warunki da si\u0119 przetestowa\u0107.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Obserwowalno\u015b\u0107: dlaczego proxy jednocze\u015bnie pomaga i za\u015blepia<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Proxy to najlepszy punkt obserwacyjny dla liczby \u017c\u0105da\u0144, rozk\u0142adu kod\u00f3w statusu i op\u00f3\u017anienia end-to-end, bo widzi ka\u017cde \u017c\u0105danie niezale\u017cnie od tego, czy backend je prze\u017cy\u0142. Ta zaleta ma sw\u00f3j odpowiednik po stronie wad. Odr\u0119bne awarie upstreamu zlewaj\u0105 si\u0119 w og\u00f3lne statusy bramy, wi\u0119c odmowa po\u0142\u0105czenia, timeout i zniekszta\u0142cona odpowied\u017a l\u0105duj\u0105 na dashboardzie z tym samym numerem. Pierwotna przyczyna znika, chyba \u017ce \u015bwiadomie j\u0105 zachowasz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adres klienta, protok\u00f3\u0142 i oryginalny host te\u017c znikaj\u0105, chyba \u017ce nag\u0142\u00f3wki przekazywania s\u0105 poprawnie ustawione i - co r\u00f3wnie wa\u017cne - honorowane tylko od znanych po\u015brednik\u00f3w. Ta sama \u015blepa plamka pojawia si\u0119 w metadanych infrastruktury: <a href=\"https:\/\/jalvo.eu\/reverse-dns-ptr-records-footprint-signal\/\">co zdradzaj\u0105 twoje rekordy PTR<\/a> o wdro\u017ceniu, bywa jedyn\u0105 zewn\u0119trzn\u0105 wskaz\u00f3wk\u0105, kt\u00f3ry host faktycznie stoi za danym adresem. Kontekst \u015bledzenia trzeba propagowa\u0107 jawnie, inaczej ka\u017cde \u017c\u0105danie w rozproszonych \u015bladach wygl\u0105da, jakby zacz\u0119\u0142o si\u0119 na proxy, co przerywa \u0142a\u0144cuch dok\u0142adnie tam, gdzie jest najwa\u017cniejszy. Por\u00f3wnanie op\u00f3\u017anienia widzianego przez proxy z op\u00f3\u017anieniem widzianym po stronie upstreamu ujawnia kolejkowanie. Gdy r\u00f3\u017cnica ro\u015bnie, \u017c\u0105dania gdzie\u015b czekaj\u0105, a ta r\u00f3\u017cnica m\u00f3wi wi\u0119cej ni\u017c ka\u017cda z tych liczb osobno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Wskaz\u00f3wka:<\/strong> loguj czas nawi\u0105zania po\u0142\u0105czenia z upstreamem, czas do nag\u0142\u00f3wk\u00f3w i pe\u0142ny czas odpowiedzi jako osobne pola, a nie jeden zbiorczy czas trwania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Awarie, kt\u00f3re dok\u0142ada sama warstwa proxy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dodanie warstwy dodaje zale\u017cno\u015b\u0107, w tym zale\u017cno\u015b\u0107 od tego, jak zachowuje si\u0119 ona przy prze\u0142adowaniu konfiguracji. Poza tym kilka tryb\u00f3w awarii wynika wprost z zajmowanej przez ni\u0105 pozycji:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Niedopasowane timeouty.<\/strong> Gdy proxy poddaje si\u0119 przed upstreamem, a upstream przed baz\u0105 danych, praca mieli si\u0119 dalej dla \u017c\u0105dania, na kt\u00f3re nikt ju\u017c nie czeka.<\/li>\n<li><strong>Keepalive i ponowne u\u017cycie po\u0142\u0105cze\u0144.<\/strong> Po\u0142\u0105czenia z puli potrafi\u0105 trafi\u0107 z \u017c\u0105daniem do backendu, kt\u00f3ry ju\u017c zacz\u0105\u0142 si\u0119 wygasza\u0107.<\/li>\n<li><strong>Limity rozmiaru.<\/strong> Ograniczenia nag\u0142\u00f3wk\u00f3w, tre\u015bci i bufor\u00f3w wywalaj\u0105 si\u0119 tylko przy najwi\u0119kszych poprawnych \u017c\u0105daniach, czyli przechodz\u0105 przez ka\u017cdy zestaw test\u00f3w.<\/li>\n<li><strong>Rozbie\u017cne ramkowanie.<\/strong> Gdy proxy i upstream inaczej rozpoznaj\u0105 granice \u017c\u0105da\u0144, otwiera si\u0119 mo\u017cliwo\u015b\u0107 przemycania \u017c\u0105da\u0144.<\/li>\n<li><strong>Przypadki brzegowe certyfikat\u00f3w i SNI.<\/strong> Uderzaj\u0105 w cz\u0119\u015b\u0107 klient\u00f3w, cz\u0119sto tych starszych, i nigdy w twojej przegl\u0105darce.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Wskaz\u00f3wka:<\/strong> ustaw timeouty upstreamu kr\u00f3cej ni\u017c timeouty proxy, \u017ceby to \u017ar\u00f3d\u0142o pada\u0142o pierwsze i m\u00f3wi\u0142o dlaczego, zamiast zostawia\u0107 ci go\u0142y b\u0142\u0105d bramy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Praktyczna procedura przegl\u0105du istniej\u0105cych konfiguracji proxy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Zacznij od spisania ka\u017cdej dyrektywy odbiegaj\u0105cej od domy\u015blnych ustawie\u0144 producenta, a potem zapytaj, jaki incydent stoi za ka\u017cd\u0105 z nich. Je\u015bli nikt nie pami\u0119ta, to ju\u017c jest ustalenie. Posortuj wyniki na trzy kategorie - \u015bwiadoma polityka, strojenie wydajno\u015bci i obej\u015bcie - a t\u0119 trzeci\u0105 potraktuj jak d\u0142ug z realnym kosztem. Zespo\u0142y, kt\u00f3re nie maj\u0105 czasu robi\u0107 tego same, mog\u0105 odda\u0107 audyt komu\u015b, kto robi to w <a href=\"https:\/\/jalvo.eu\/pl\/uslugi\/\">ramach przegl\u0105du infrastruktury<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Usuni\u0119cie podejrzanych obej\u015b\u0107 przetestuj na \u015brodowisku staging, u\u017cywaj\u0105c realistycznych rozmiar\u00f3w \u0142adunku i wolnych klient\u00f3w, a nie porz\u0105dnych syntetycznych \u017c\u0105da\u0144. Wi\u0119kszo\u015b\u0107 zamaskowanych usterek wraca dopiero w realistycznych warunkach. To, co przetrwa, \u015bled\u017a w tym samym backlogu co b\u0142\u0119dy aplikacji, \u017ceby te pozycje walczy\u0142y o realny priorytet, zamiast siedzie\u0107 w dokumencie infrastrukturalnym, kt\u00f3rego nikt nie otwiera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Wskaz\u00f3wka:<\/strong> gdy obej\u015bcie musi zosta\u0107, podepnij pod nie alert, kt\u00f3ry odpali, je\u015bli maskowany stan si\u0119 pogorszy. Podniesiony timeout jest do zniesienia, je\u015bli dowiesz si\u0119, kiedy op\u00f3\u017anienie u podstawy si\u0119 podwoi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wybieraj \u015bwiadomie, nie odruchowo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ma\u0142e wdro\u017cenia mog\u0105 spokojnie od\u0142o\u017cy\u0107 t\u0119 warstw\u0119 do czasu, a\u017c uzasadni j\u0105 z\u0142o\u017cono\u015b\u0107 routingu albo certyfikat\u00f3w. Dodanie jej wcze\u015bnie kupuje elastyczno\u015b\u0107, kt\u00f3rej mo\u017cesz nie potrzebowa\u0107, i powierzchni\u0119, kt\u00f3r\u0105 i tak trzeba utrzymywa\u0107. Kiedykolwiek ju\u017c j\u0105 do\u0142o\u017cysz, trzymaj ka\u017cd\u0105 dyrektyw\u0119 przy jednym standardzie: nowy in\u017cynier powinien w nieca\u0142\u0105 minut\u0119 wywnioskowa\u0107, po co ona tam jest. Wszystko, co tego testu nie przechodzi, jest albo nieudokumentowan\u0105 polityk\u0105, albo usterk\u0105 w przebraniu, a jedno i drugie warto znale\u017a\u0107, zanim znajdzie je za ciebie incydent. Wi\u0119cej notatek o <a href=\"https:\/\/jalvo.eu\/pl\/category\/ogolne\/\">codziennych decyzjach infrastrukturalnych<\/a> trzyma si\u0119 tej samej zasady.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ma\u0142o kt\u00f3ry element infrastruktury trafia do wdro\u017cenia tak bezrefleksyjnie jak reverse proxy. Pojawia si\u0119 w pierwszym sprincie nowego wdro\u017cenia, przejmuje [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2093,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[182],"tags":[217,227,237,247,32,37,259,257],"class_list":["post-2125","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seo-pl","tag-architektura","tag-devops-x","tag-infrastruktura","tag-nginx-x","tag-odwrotne-proxy","tag-rownowazenie-obciazenia","tag-serwery-www","tag-tls-x"],"acf":[],"uagb_featured_image_src":{"full":["https:\/\/jalvo.eu\/wp-content\/uploads\/2026\/09\/reverse-proxy-right-answer-or-hidden-problem-320.jpg",1200,800,false],"thumbnail":["https:\/\/jalvo.eu\/wp-content\/uploads\/2026\/09\/reverse-proxy-right-answer-or-hidden-problem-320-150x150.jpg",150,150,true],"medium":["https:\/\/jalvo.eu\/wp-content\/uploads\/2026\/09\/reverse-proxy-right-answer-or-hidden-problem-320-300x200.jpg",300,200,true],"medium_large":["https:\/\/jalvo.eu\/wp-content\/uploads\/2026\/09\/reverse-proxy-right-answer-or-hidden-problem-320-768x512.jpg",768,512,true],"large":["https:\/\/jalvo.eu\/wp-content\/uploads\/2026\/09\/reverse-proxy-right-answer-or-hidden-problem-320-1024x683.jpg",1024,683,true],"1536x1536":["https:\/\/jalvo.eu\/wp-content\/uploads\/2026\/09\/reverse-proxy-right-answer-or-hidden-problem-320.jpg",1200,800,false],"2048x2048":["https:\/\/jalvo.eu\/wp-content\/uploads\/2026\/09\/reverse-proxy-right-answer-or-hidden-problem-320.jpg",1200,800,false]},"uagb_author_info":{"display_name":"websystems","author_link":"https:\/\/jalvo.eu\/pl\/author\/websystems\/"},"uagb_comment_info":0,"uagb_excerpt":"Ma\u0142o kt\u00f3ry element infrastruktury trafia do wdro\u017cenia tak bezrefleksyjnie jak reverse proxy. Pojawia si\u0119 w pierwszym sprincie nowego wdro\u017cenia, przejmuje [&hellip;]","_links":{"self":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/posts\/2125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/comments?post=2125"}],"version-history":[{"count":0,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/posts\/2125\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/media\/2093"}],"wp:attachment":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/media?parent=2125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/categories?post=2125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/tags?post=2125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}