{"id":21151,"date":"2026-08-29T18:19:12","date_gmt":"2026-08-29T16:19:12","guid":{"rendered":"https:\/\/webhosting.de\/nginx-buffering-performance-speicher-proxy\/"},"modified":"2026-08-29T18:19:12","modified_gmt":"2026-08-29T16:19:12","slug":"nginx-buforowanie-wydajnosc-pamiec-proxy","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/nginx-buffering-performance-speicher-proxy\/","title":{"rendered":"Buforowanie proxy w NGINX: optymalizacja wydajno\u015bci i pami\u0119ci"},"content":{"rendered":"<p><strong>Buforowanie w NGINX<\/strong> okre\u015bla, jak szybko i w spos\u00f3b oszcz\u0119dzaj\u0105cy pami\u0119\u0107 Tw\u00f3j serwer proxy odbiera odpowiedzi z serwera nadrz\u0119dnego, buforuje je i wysy\u0142a do klient\u00f3w. Poka\u017c\u0119, jak zmniejszam op\u00f3\u017anienia, wcze\u015bnie zwalniam po\u0142\u0105czenia z serwerami zaplecza oraz jak <strong>Pami\u0119\u0107<\/strong> i zachowa\u0107 nad tym kontrol\u0119.<\/p>\n\n<h2>Punkty centralne<\/h2>\n<p>Poni\u017csze kluczowe aspekty pomagaj\u0105 mi w odpowiednim zr\u00f3wnowa\u017ceniu wydajno\u015bci i zapotrzebowania na pami\u0119\u0107.<\/p>\n<ul>\n  <li><strong>Odsprz\u0119ganie<\/strong> mi\u0119dzy klientem a serwerem skraca czas po\u0142\u0105czenia i zwi\u0119ksza przepustowo\u015b\u0107.<\/li>\n  <li><strong>Rozmiary bufor\u00f3w<\/strong> wybra\u0107 opcj\u0119 \u201edok\u0142adnie\u201d, aby zaoszcz\u0119dzi\u0107 pami\u0119\u0107 RAM i unikn\u0105\u0107 operacji wej\u015bcia\/wyj\u015bcia na dysku.<\/li>\n  <li><strong>zaj\u0119te bufory<\/strong> ograniczy\u0107 ilo\u015b\u0107 pami\u0119ci aktywnej podczas wysy\u0142ania.<\/li>\n  <li><strong>Wyj\u0105tki dotycz\u0105ce streamingu<\/strong> korzysta\u0107 z niego w spos\u00f3b praktyczny bez buforowania.<\/li>\n  <li><strong>Monitoring<\/strong> a testy obci\u0105\u017ceniowe zapewniaj\u0105 bezpiecze\u0144stwo ka\u017cdej zmiany.<\/li>\n<\/ul>\n\n<h2>Jak dzia\u0142a buforowanie proxy w NGINX<\/h2>\n<p>Korzystam z aktywnego <strong>Buforowanie<\/strong>, aby NGINX m\u00f3g\u0142 szybko pobiera\u0107 odpowiedzi z serwera upstream, a nast\u0119pnie samodzielnie dostarcza\u0107 je klientom. Takie oddzielenie zmniejsza <strong>Op\u00f3\u017anienie<\/strong> po stronie serwera, poniewa\u017c aplikacja szybciej ko\u0144czy dzia\u0142anie i wcze\u015bniej zamyka po\u0142\u0105czenie. Podczas gdy klienci \u0142aduj\u0105 si\u0119 z r\u00f3\u017cn\u0105 pr\u0119dko\u015bci\u0105, warstwa proxy reguluje wysy\u0142anie danych z pami\u0119ci operacyjnej. Je\u015bli dane nie mieszcz\u0105 si\u0119 w ca\u0142o\u015bci w pami\u0119ci RAM, NGINX mo\u017ce tymczasowo skorzysta\u0107 z plik\u00f3w, dzi\u0119ki czemu nadal niezawodnie przekazuje odpowied\u017a. W\u0142a\u015bnie takie zachowanie stabilizuje systemy poddane du\u017cemu obci\u0105\u017ceniu, obs\u0142uguj\u0105ce wiele jednoczesnych <strong>Po\u0142\u0105czenia<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/nginx-proxy-buffering-4082.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kiedy buforowanie aktywne jest najlepszym rozwi\u0105zaniem<\/h2>\n<p>W przypadku klasycznych aplikacji internetowych, interfejs\u00f3w API o \u015bredniej wielko\u015bci odpowiedzi lub stos\u00f3w WordPress zapewnia <strong>Buforowanie<\/strong> regularnie najlepsze wyniki. Szybciej odci\u0105\u017cam backend, podczas gdy NGINX przejmuje pozosta\u0142\u0105 cz\u0119\u015b\u0107 transferu do cz\u0119sto zr\u00f3\u017cnicowanych sieci klienckich. Dzi\u0119ki temu wzrasta efektywna <strong>Przepustowo\u015b\u0107<\/strong>, zw\u0142aszcza gdy jednocze\u015bnie przetwarzanych jest wiele \u017c\u0105da\u0144. Kto \u0142\u0105czy kilka us\u0142ug za serwerem proxy odwrotnym, czerpie dodatkowe korzy\u015bci z kontrolowanego roz\u0142o\u017cenia obci\u0105\u017cenia. W kwestiach architektonicznych dotycz\u0105cych serwer\u00f3w proxy pomaga mi jasna <a href=\"https:\/\/webhosting.de\/pl\/konfiguracja-odwrotnego-proxy-architektura-webhostingu-proxyhosting\/\">Architektura odwrotnego serwera proxy<\/a>, kt\u00f3ra wyra\u017anie rozdziela role i ograniczenia.<\/p>\n\n<h2>Pami\u0119\u0107 a operacje wej\u015bcia\/wyj\u015bcia: odpowiedni bud\u017cet<\/h2>\n<p>R\u00f3wnowa\u017c\u0119 wykorzystanie pami\u0119ci RAM i dost\u0119p do dysk\u00f3w twardych, poniewa\u017c zbyt ma\u0142e bufory powoduj\u0105 niepotrzebne <strong>Dysk I\/O<\/strong> wywo\u0142ywa\u0107, a zbyt du\u017ce bufory powoduj\u0105 nadmierne obci\u0105\u017cenie pami\u0119ci na ka\u017cde po\u0142\u0105czenie. Decyduj\u0105ce znaczenie maj\u0105 typowe rozmiary odpowiedzi, r\u00f3wnoleg\u0142e zapytania oraz rzeczywista <strong>Szybko\u015b\u0107 dzia\u0142ania klienta<\/strong>. W idealnym przypadku ma\u0142e odpowiedzi pozostaj\u0105 w ca\u0142o\u015bci w pami\u0119ci RAM, dzi\u0119ki czemu NGINX przesy\u0142a je bez op\u00f3\u017anie\u0144 do wolniejszych odbiorc\u00f3w. Bardzo du\u017ce tre\u015bci mog\u0105 trafi\u0107 na dysk, ale wtedy dbam o szybkie dyski i stosuj\u0119 ograniczenia zapobiegaj\u0105ce nadmiernemu obci\u0105\u017ceniu we\/wy. Ta r\u00f3wnowaga pozwala utrzyma\u0107 <strong>Czasy reakcji<\/strong> niskie i chroni uk\u0142ad przed ci\u015bnieniem w zbiorniku.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/nginx_proxy_meeting_8574.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Przegl\u0105d wytycznych i warto\u015bci orientacyjnych<\/h2>\n<p>Celowo ustawiam kluczowe parametry, aby kontrolowa\u0107 pami\u0119\u0107 i spos\u00f3b wysy\u0142ania danych. Pierwszy bufor dla nag\u0142\u00f3wk\u00f3w odpowiedzi jest do\u0142\u0105czony do <strong>proxy_buffer_size<\/strong>; zapobiega to powstawaniu zbyt du\u017cych b\u0142\u0119d\u00f3w nag\u0142\u00f3wk\u00f3w i pozwala unikn\u0105\u0107 niepotrzebnego przenoszenia danych do pami\u0119ci zewn\u0119trznej. Same dane odpowiedzi rozdzielam za pomoc\u0105 <strong>proxy_buffers<\/strong> jako pary \u201eliczba \u00d7 rozmiar\u201d, tak aby obiekty \u201eBodies\u201d w miar\u0119 mo\u017cliwo\u015bci pozostawa\u0142y w ca\u0142o\u015bci w pami\u0119ci RAM. Z <strong>proxy_busy_buffers_size<\/strong> Ograniczam liczb\u0119 bufor\u00f3w ju\u017c zarezerwowanych do wysy\u0142ki, aby ograniczy\u0107 zu\u017cycie pami\u0119ci aktywnej. Typowe rozmiary ustalam na podstawie stron pami\u0119ci (4\u201332 KB) oraz znanych profili odpowiedzi moich aplikacji.<\/p>\n<table>\n  <thead>\n    <tr>\n      <th><strong>dyrektywa<\/strong><\/th>\n      <th><strong>Efekt<\/strong><\/th>\n      <th><strong>Typowe warto\u015bci<\/strong><\/th>\n      <th><strong>Uwagi<\/strong><\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>buforowanie proxy<\/td>\n      <td><strong>W\u0142\u0105cz\/Wy\u0142\u0105cz<\/strong> buforowania<\/td>\n      <td>w\u0142\u0105czone (domy\u015blnie)<\/td>\n      <td>Pozostaw w\u0142\u0105czon\u0105 dla standardowych aplikacji internetowych; sprawd\u017a w przypadku transmisji na \u017cywo<\/td>\n    <\/tr>\n    <tr>\n      <td>proxy_buffer_size<\/td>\n      <td><strong>Bufor nag\u0142\u00f3wka<\/strong><\/td>\n      <td>8k\u201316k<\/td>\n      <td>Zbyt ma\u0142y rozmiar powoduje b\u0142\u0105d \u201eupstream sent too big header\u201c<\/td>\n    <\/tr>\n    <tr>\n      <td>proxy_buffers<\/td>\n      <td><strong>Bufor cia\u0142a<\/strong><\/td>\n      <td>8 \u00d7 16k, 16 \u00d7 16k<\/td>\n      <td>Powi\u0105zanie z wielko\u015bciami odpowiedzi i r\u00f3wnoleg\u0142o\u015bci\u0105<\/td>\n    <\/tr>\n    <tr>\n      <td>proxy_busy_buffers_size<\/td>\n      <td><strong>Limit bufora transmisji<\/strong><\/td>\n      <td>32k\u2013128k<\/td>\n      <td>Wystarczaj\u0105ca przepustowo\u015b\u0107 bez anga\u017cowania pami\u0119ci RAM<\/td>\n    <\/tr>\n    <tr>\n      <td>proxy_max_temp_file_size<\/td>\n      <td><strong>Limit dysku<\/strong><\/td>\n      <td>0\u20131 g<\/td>\n      <td>0 wy\u0142\u0105cza pliki tymczasowe<\/td>\n    <\/tr>\n    <tr>\n      <td>proxy_temp_path<\/td>\n      <td><strong>\u015acie\u017cka<\/strong> dla plik\u00f3w tymczasowych<\/td>\n      <td>\u015acie\u017cka do dysku SSD<\/td>\n      <td>Zapisa\u0107 na no\u015bniku danych o du\u017cej pr\u0119dko\u015bci<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Profile dostosowane do praktyki i przyk\u0142adowe obliczenia<\/h2>\n<p>Z grubsza obliczam zapotrzebowanie na pami\u0119\u0107 na jedno aktywne po\u0142\u0105czenie jako sum\u0119 <strong>proxy_buffer_size<\/strong> plus (N \u00d7 rozmiar bufora) z `proxy_buffers`. Przy 8 buforach po 16 kB plus 16 kB nag\u0142\u00f3wka otrzymujemy oko\u0142o 144 KB na ka\u017cde \u017c\u0105danie, o ile wszystko pozostaje w pami\u0119ci RAM. Przy 5 000 jednoczesnych \u017c\u0105da\u0144 szacuj\u0119 wi\u0119c, \u017ce czyste obci\u0105\u017cenie bufora wyniesie oko\u0142o 720 MB, plus obci\u0105\u017cenie zwi\u0105zane z <strong>Procesy<\/strong>. Wraz ze wzrostem ruchu ro\u015bnie r\u00f3wnie\u017c zapotrzebowanie \u2013 dlatego ustalam rezerwy tak, aby uwzgl\u0119dnia\u0142y typowe odpowiedzi, nie traktuj\u0105c przy tym nietypowych przypadk\u00f3w z nadmiernie rozbudowanymi tre\u015bciami jako normy. W razie potrzeby ograniczam wyj\u0105tki za pomoc\u0105 <strong>Limity dyskowe<\/strong>, aby zr\u00f3wnowa\u017cy\u0107 szczytowe obci\u0105\u017cenia pami\u0119ci.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/nginx-proxy-optimization-4285.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kiedy \u015bwiadomie wy\u0142\u0105czam buforowanie<\/h2>\n<p>Interfejsy API dzia\u0142aj\u0105ce w czasie rzeczywistym, zdarzenia wysy\u0142ane przez serwer (Server-Sent Events) lub wideo na \u017cywo wymagaj\u0105 bezpo\u015bredniego <strong>Przepustowo\u015b\u0107<\/strong> bez dodatkowego buforowania. W takich przypadkach wy\u0142\u0105czam opcj\u0119 `proxy_buffering` i stawiam na wydajne <strong>Streaming<\/strong>. Serwer proxy natychmiast przekazuje dane, co pozwala unikn\u0105\u0107 skok\u00f3w op\u00f3\u017anie\u0144 w przypadku danych na \u017cywo, ale powoduje, \u017ce po\u0142\u0105czenie z serwerem zaplecza pozostaje otwarte d\u0142u\u017cej. W przypadku tych scenariuszy warto przyjrze\u0107 si\u0119 <a href=\"https:\/\/webhosting.de\/pl\/http-response-streaming-hosting-performance-chunks\/\">Transmisja strumieniowa odpowiedzi<\/a>, w tym odpowiednie dostosowanie parametr\u00f3w keepalive i timeoutu. Nale\u017cy jednak pami\u0119ta\u0107 o wi\u0119kszym zu\u017cyciu zasob\u00f3w na ka\u017cde po\u0142\u0105czenie i odpowiednio ustawi\u0107 limity.<\/p>\n\n<h2>Celowe ustawianie bufor\u00f3w zaj\u0119tych<\/h2>\n<p>Z <strong>proxy_busy_buffers_size<\/strong> kontroluj\u0119, jaka cz\u0119\u015b\u0107 pami\u0119ci \u201egotowej do wysy\u0142ki\u201c pozostaje jednocze\u015bnie zablokowana. Zbyt niskie ograniczenie spowalnia dostarczanie danych; zbyt wysokie powoduje wzrost szczytowego zu\u017cycia pami\u0119ci RAM. Dlatego wybieram warto\u015b\u0107 odpowiadaj\u0105c\u0105 1\u20132-krotno\u015bci rozmiaru bufora, aby NGINX szybko przesy\u0142a\u0142 pakiety, nie powoduj\u0105c nadmiernego <strong>Pami\u0119\u0107<\/strong> . W przypadku wolnych klient\u00f3w akceptuj\u0119 nieco wi\u0119ksz\u0105 ilo\u015b\u0107 pami\u0119ci zaj\u0119tej, aby zmniejszy\u0107 ryzyko cz\u0119stych zmian kontekstu. Szybkie sieci korzystaj\u0105 z mniejszych warto\u015bci, kt\u00f3re <strong>Wymagania dotycz\u0105ce pami\u0119ci<\/strong> zapewni\u0107 przewidywalno\u015b\u0107.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/nginx_proxy_buffering_opt_7823.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Pliki tymczasowe: \u015bcie\u017cka, rozmiar, limity<\/h2>\n<p>Aktywuj\u0119 tymczasowe <strong>Pliki<\/strong> tylko wtedy, gdy du\u017ce obiekty wyst\u0119puj\u0105 realistycznie lub brakuje pami\u0119ci RAM. Je\u015bli pliki tymczasowe znajduj\u0105 si\u0119 na dysku SSD, czasy reakcji pozostaj\u0105 na akceptowalnym poziomie; na wolnym dysku operacje wej\u015bcia\/wyj\u015bcia szybko spowalniaj\u0105 ca\u0142o\u015b\u0107 <strong>W\u0105tek odpowiedzi<\/strong>. Za pomoc\u0105 parametru proxy_max_temp_file_size zabezpieczam si\u0119 przed nadmiernym zaj\u0119ciem pami\u0119ci; w razie w\u0105tpliwo\u015bci ustalam sztywny limit. Je\u015bli pojawia si\u0119 wiele r\u00f3wnoleg\u0142ych, du\u017cych odpowiedzi, zapewniam wystarczaj\u0105c\u0105 ilo\u015b\u0107 miejsca i monitoruj\u0119 rzeczywiste obci\u0105\u017cenie. Tam, gdzie dost\u0119pna jest pami\u0119\u0107 RAM, preferuj\u0119 wi\u0119ksze bufory i przechowuj\u0119 krytyczne cz\u0119\u015bci w <strong>Pami\u0119\u0107<\/strong>.<\/p>\n\n<h2>Iteracyjne dostrajanie, wska\u017aniki i testy<\/h2>\n<p>Zaczynam od konserwatywnych <strong>Warto\u015bci<\/strong>, mierz, dostosowuj i powtarzaj ten cykl. Wa\u017cnymi wska\u017anikami s\u0105 op\u00f3\u017anienie, wska\u017anik b\u0142\u0119d\u00f3w, szczytowe zu\u017cycie pami\u0119ci RAM, czasy oczekiwania na operacje wej\u015bcia\/wyj\u015bcia oraz obci\u0105\u017cenie <strong>Pracownik<\/strong>. Testy obci\u0105\u017ceniowe ujawniaj\u0105 zjawiska, kt\u00f3re pozostaj\u0105 niewidoczne w codziennej eksploatacji, takie jak skoki w nag\u0142\u00f3wkach spowodowane plikami cookie czy sporadyczne odpowiedzi o ogromnej obj\u0119to\u015bci. Dodatkowo dostosowuj\u0119 parametry po\u0142\u0105cze\u0144 i proces\u00f3w roboczych w ramach ich wsp\u00f3\u0142dzia\u0142ania, na przyk\u0142ad <a href=\"https:\/\/webhosting.de\/pl\/nginx-skalowanie-polaczen-workerow-obsluga-tysiecy-zadan-zwiekszenie-przepustowosci-ruchu\/\">Worker\u2011Connections<\/a> oraz Keepalive. Ka\u017cd\u0105 zmian\u0119 sprawdzam w spos\u00f3b kontrolowany, aby oceni\u0107 wp\u0142yw <strong>Bufor<\/strong> mo\u017cna jednoznacznie przypisa\u0107.<\/p>\n\n<h2>Buforowanie \u017c\u0105da\u0144 i przesy\u0142anie plik\u00f3w<\/h2>\n<p>Bufory odpowiedzi to tylko po\u0142owa prawdy. Po stronie wej\u015bciowej steruje <strong>proxy_request_buffering<\/strong>, czy NGINX najpierw w pe\u0142ni buforuje tre\u015bci przesy\u0142ane przez klient\u00f3w (np. pliki do przes\u0142ania), czy te\u017c natychmiast przekazuje je do serwera \u017ar\u00f3d\u0142owego. W przypadku interfejs\u00f3w API, kt\u00f3re odbieraj\u0105 du\u017ce pliki, cz\u0119sto wy\u0142\u0105czam buforowanie \u017c\u0105da\u0144: serwer docelowy widzi strumie\u0144 wcze\u015bniej, skr\u00f3caj\u0105 si\u0119 limity czasu, a NGINX nie musi tymczasowo przechowywa\u0107 du\u017cych tre\u015bci na dysku. Wada: po\u0142\u0105czenie z serwerem docelowym pozostaje otwarte d\u0142u\u017cej i jest w wi\u0119kszym stopniu zale\u017cne od szybko\u015bci klienta. W przypadku klasycznych formularzy lub mniejszych \u017c\u0105da\u0144 JSON buforowanie \u017c\u0105da\u0144 pozostaje w\u0142\u0105czone, aby p\u0142ynnie wyg\u0142adza\u0107 skoki obci\u0105\u017cenia i lepiej kontrolowa\u0107 zasoby serwera. \u0141\u0105cz\u0119 to z <strong>client_max_body_size<\/strong> oraz odpowiedni\u0105 <strong>client_body_buffer_size<\/strong>, aby warto\u015bci odstaj\u0105ce by\u0142y wcze\u015bnie odrzucane lub odpowiednio buforowane.<\/p>\n\n<h2>Sterowanie Pro-Response: buforowanie X-Accel, fragmentacja i d\u0142ugo\u015bci<\/h2>\n<p>W trybie drobnoziarnistym wy\u0142\u0105czam buforowanie na odpowied\u017a poprzez <strong>Buforowanie X-Accel<\/strong> Z Upstream: Nag\u0142\u00f3wek \u201eX-Accel-Buffering: no\u201c sygnalizuje serwerowi NGINX, aby bezpo\u015brednio przesy\u0142a\u0142 strumieniowo odpowied\u017a, nawet je\u015bli opcja proxy_buffering jest globalnie w\u0142\u0105czona. Wykorzystuj\u0119 to w przypadku SSE, long-pollingu lub strumieni diagnostycznych, nie rezygnuj\u0105c przy tym z og\u00f3lnego dostrajania. Ponadto zwracam uwag\u0119 na poprawne <strong>D\u0142ugo\u015b\u0107 tre\u015bci<\/strong>, tam, gdzie to mo\u017cliwe: je\u015bli NGINX zna d\u0142ugo\u015b\u0107, planuje bufory i pliki tymczasowe w spos\u00f3b bardziej przewidywalny ni\u017c w przypadku, gdy wy\u0142\u0105cznie <strong>podzielony<\/strong> jest przesy\u0142ane. W przypadku nieznanej d\u0142ugo\u015bci (np. transmisje na \u017cywo) ostro\u017cnie szacuj\u0119 zapotrzebowanie i zabezpieczam operacje wej\u015bcia\/wyj\u015bcia za pomoc\u0105 limit\u00f3w. W przypadku stron b\u0142\u0119d\u00f3w lub niewielkich odpowiedzi JSON pozostawiam buforowanie \u015bci\u015ble w\u0142\u0105czone, aby po\u0142\u0105czenie upstreamowe zosta\u0142o szybko zwolnione.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/nginx_proxy_optimization_7381.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kompresja i protoko\u0142y: HTTP\/2\/3 w skr\u00f3cie<\/h2>\n<p>Kompresj\u0119 i buforowanie nale\u017cy rozpatrywa\u0107 \u0142\u0105cznie. Czy <strong>gzip<\/strong> lub gdy funkcja Brotli jest w\u0142\u0105czona, kompresja korzysta z ci\u0105g\u0142ych blok\u00f3w danych w pami\u0119ci RAM. Zbyt ma\u0142e bufory mog\u0105 ogranicza\u0107 przepustowo\u015b\u0107, poniewa\u017c modu\u0142 kompresuj\u0105cy musi cz\u0119\u015bciej zmienia\u0107 kontekst. Dlatego wybieram rozmiary bufor\u00f3w, kt\u00f3re dobrze grupuj\u0105 typowe segmenty odpowiedzi, nie powoduj\u0105c przy tym nadmiernego zape\u0142nienia pami\u0119ci RAM dla ka\u017cdego po\u0142\u0105czenia. W sekcji <strong>HTTP\/2<\/strong> oraz <strong>HTTP\/3<\/strong> Dzi\u0119ki multipleksowaniu i kontroli przep\u0142ywu pr\u0119dko\u015b\u0107 wysy\u0142ania r\u00f3\u017cni si\u0119 w zale\u017cno\u015bci od strumienia; buforowanie stabilizuje przy tym stron\u0119 backendow\u0105, podczas gdy NGINX precyzyjnie synchronizuje strumienie. Wa\u017cne: na \u015bcie\u017ckach bardzo wra\u017cliwych na op\u00f3\u017anienia zmniejszenie warto\u015bci \u201eBusy-Space\u201c o jeden tick mo\u017ce pom\u00f3c w z\u0142agodzeniu efekt\u00f3w \u201ehead-of-line\u201d; na \u201egrubych\u201d \u0142\u0105czach z du\u017cymi oknami przydzielam nieco wi\u0119cej miejsca w \u201eBusy-Space\u201d, aby utrzyma\u0107 maksymaln\u0105 wydajno\u015b\u0107 wysy\u0142ania.<\/p>\n\n<h2>Pami\u0119\u0107 podr\u0119czna serwera proxy i \u017c\u0105dania zakresowe: wsp\u00f3\u0142dzia\u0142anie z buforami<\/h2>\n<p>Kto <strong>proxy_cache<\/strong> w przypadku korzystania z tej funkcji nale\u017cy odpowiednio dopasowa\u0107 bud\u017cet bufor\u00f3w i plik\u00f3w tymczasowych. NGINX mo\u017ce jednocze\u015bnie buforowa\u0107 odpowiedzi i dostarcza\u0107 je klientom; wystarczaj\u0105ca ilo\u015b\u0107 pami\u0119ci RAM w buforach skraca czas trwania po\u0142\u0105czenia z serwerem zaplecza, podczas gdy trafienie w pami\u0119ci podr\u0119cznej ca\u0142kowicie oddziela p\u00f3\u017aniejsze \u017c\u0105dania. Bardziej rygorystycznie ograniczam pliki tymczasowe, gdy pami\u0119\u0107 podr\u0119czna jest rozgrzana, i udost\u0119pniam je tak d\u0142ugo, jak d\u0142ugo trwa budowanie wska\u017anika trafie\u0144. W przypadku <strong>Zapytania dotycz\u0105ce asortymentu<\/strong> (Pobieranie cz\u0119\u015bciowe) decyduj\u0119, czy obs\u0142u\u017cy\u0107 je bezpo\u015brednio z pami\u0119ci podr\u0119cznej, czy najpierw pozwoli\u0107 na pe\u0142ne zbuforowanie. Cz\u0119ste zakresy du\u017cych plik\u00f3w zyskuj\u0105 dzi\u0119ki precyzyjnie wywa\u017conym rozmiarom bufor\u00f3w i opcjonalnym segmentowanym odpowiedziom, dzi\u0119ki czemu ani operacje wej\u015bcia\/wyj\u015bcia na dysku, ani pami\u0119\u0107 RAM nie wymykaj\u0105 si\u0119 spod kontroli.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/nginx-optimierung-server-4573.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Powolne klienty: jak ograniczy\u0107 przepustowo\u015b\u0107 bez nadmiernego obci\u0105\u017cania pami\u0119ci RAM<\/h2>\n<p>Wi\u0119kszo\u015b\u0107 efekt\u00f3w buforowania ujawnia si\u0119 dopiero w przypadku bardzo wolnych klient\u00f3w. Ustawiam <strong>send_timeout<\/strong> i opcjonalnie <strong>limit_rate<\/strong>\/<strong>limit_rate_after<\/strong>, aby chroni\u0107 powolnych odbiorc\u00f3w bez nadmiernego obci\u0105\u017cania proces\u00f3w roboczych. W przypadku znacznego ograniczenia przepustowo\u015bci bufory zaj\u0119to\u015bci musz\u0105 wzrosn\u0105\u0107, w przeciwnym razie grozi zablokowaniem; jednocze\u015bnie kontroluj\u0119 liczb\u0119 r\u00f3wnoleg\u0142ych po\u0142\u0105cze\u0144 na adres IP, aby z\u0142agodzi\u0107 nietypowe wzorce. W przypadku pobra\u0144 z r\u00f3\u017cnorodnymi klientami (sie\u0107 kom\u00f3rkowa, Wi-Fi, \u015bwiat\u0142ow\u00f3d) pomocne s\u0105 umiarkowane warto\u015bci \u201eBusy\u201d i nieco wi\u0119ksze bufory \u201eBody\u201d, dzi\u0119ki czemu NGINX dostarcza dane liniowo, podczas gdy serwer \u017ar\u00f3d\u0142owy jest ju\u017c zaj\u0119ty obs\u0142ug\u0105 kolejnego \u017c\u0105dania.<\/p>\n\n<h2>Dzia\u0142anie w kontenerach i orkiestracja<\/h2>\n<p>Planuj\u0119 to w kontenerach <strong>proxy_temp_path<\/strong> Nale\u017cy pami\u0119ta\u0107: albo szybki wolumin hosta (SSD), albo system plik\u00f3w tmpfs, je\u015bli dost\u0119pna jest wystarczaj\u0105ca ilo\u015b\u0107 pami\u0119ci RAM. Limity kontener\u00f3w (pami\u0119\u0107\/procesor\/pami\u0119\u0107 tymczasowa) maj\u0105 bezpo\u015bredni wp\u0142yw na bufory i pliki tymczasowe; zapewniam wystarczaj\u0105cy zapas na obci\u0105\u017cenia szczytowe i odpowiednio reguluj\u0119 liczb\u0119 r\u00f3wnoleg\u0142ych proces\u00f3w roboczych oraz po\u0142\u0105cze\u0144. Wa\u017cne jest, aby <strong>ulimit -n<\/strong> (deskryptory plik\u00f3w) oraz limity Orchestratora: je\u015bli pami\u0119\u0107 efemeryczna jest zbyt ma\u0142a, pliki tymczasowe powoduj\u0105 b\u0142\u0119dy; je\u015bli pami\u0119ci RAM jest za ma\u0142o, procesy robocze ulegaj\u0105 awarii pod presj\u0105 OOM. Dopasowuj\u0119 rozmiar bufor\u00f3w tak, aby typowe szczyty obci\u0105\u017cenia pozostawa\u0142y stabilne w granicach kontenera, i na bie\u017c\u0105co monitoruj\u0119 rzeczywiste zapotrzebowanie na miejsce w katalogach tymczasowych.<\/p>\n\n<h2>Warto\u015bci pocz\u0105tkowe i szablon dla popularnych aplikacji internetowych<\/h2>\n<p>Jako solidn\u0105 podstaw\u0119 przyjmuj\u0119 kr\u00f3tki profil, kt\u00f3ry nast\u0119pnie doprecyzowuj\u0119 na podstawie wynik\u00f3w pomiar\u00f3w. Przyk\u0142ad:<\/p>\n<pre><code>location \/ {\n    proxy_http_version 1.1;\n    proxy_set_header Connection \"\";\n    proxy_buffering on;\n\n    # Bufory nag\u0142\u00f3wk\u00f3w i tre\u015bci\n    proxy_buffer_size 16k;\n    proxy_buffers 16 16k;\n    proxy_busy_buffers_size 64k;\n\n    # Pliki tymczasowe tylko jako rozwi\u0105zanie awaryjne\n    proxy_max_temp_file_size 256m;\n    proxy_temp_path \/var\/cache\/nginx\/proxy_temp 1 2;\n\n    # Limity czasu i wysy\u0142anie\n    proxy_read_timeout 60s;\n    send_timeout 30s;\n\n # Opcjonalnie: strumieniowe przesy\u0142anie danych w zale\u017cno\u015bci od API\n    # proxy_request_buffering off;\n}\n<\/code><\/pre>\n<p>Dzi\u0119ki temu odpowiedzi \u015bredniej wielko\u015bci pozostaj\u0105 w ca\u0142o\u015bci w pami\u0119ci RAM, przepustowo\u015b\u0107 w kierunku upstream zostaje szybko zwolniona, a pliki tymczasowe s\u0105 wykorzystywane tylko w przypadku warto\u015bci odstaj\u0105cych. W drugiej rundzie dostosowuj\u0119 liczb\u0119 bufor\u00f3w do rzeczywistej r\u00f3wnoleg\u0142o\u015bci, w razie potrzeby nieznacznie zwi\u0119kszam rozmiar bufora \u201ebusy\u201d w przypadku kr\u00f3tkich, cz\u0119stych odpowiedzi oraz bardziej restrykcyjnie ograniczam pliki tymczasowe, gdy tylko wska\u017anik trafie\u0144 w pami\u0119ci podr\u0119cznej zacznie przynosi\u0107 efekty.<\/p>\n\n<h2>Monitorowanie i rejestrowanie: uwidocznienie efekt\u00f3w<\/h2>\n<p>Dok\u0142adnie to mierz\u0119: <strong>$request_time<\/strong> oraz <strong>$upstream_response_time<\/strong> w dzienniku dost\u0119pu wida\u0107, czy po\u0142\u0105czenie z serwerem nadrz\u0119dnym zostaje przedwcze\u015bnie roz\u0142\u0105czone. <strong>1 TP 4 Tbajt\u00f3w wys\u0142anych<\/strong> oraz <strong>$body_bytes_sent<\/strong> pomagaj\u0105 w dostosowaniu profili buforowania do rzeczywistego ruchu. Je\u015bli r\u00f3\u017cnica mi\u0119dzy czasem przesy\u0142u w kierunku upstream a ca\u0142kowitym czasem trwania maleje, bufory dzia\u0142aj\u0105 prawid\u0142owo. Koreluj\u0119 to ze szczytami obci\u0105\u017cenia pami\u0119ci RAM, czasem oczekiwania na operacje wej\u015bcia\/wyj\u015bcia oraz zaj\u0119to\u015bci\u0105 <strong>proxy_temp_path<\/strong>. Podczas test\u00f3w obci\u0105\u017ceniowych zmieniam pr\u0119dko\u015bci klient\u00f3w, poziomy odpowiedzi oraz obci\u0105\u017cenie nag\u0142\u00f3wk\u00f3w (np. pliki cookie), aby wykry\u0107 skrajne przypadki. Dopiero gdy metryki log\u00f3w i warto\u015bci systemowe stabilnie mieszcz\u0105 si\u0119 w moim docelowym przedziale, zamra\u017cam profil i dokumentuj\u0119 granice oraz \u015bcie\u017cki eskalacji (wi\u0119ksze bufory, inna polityka tymczasowa, dodatkowe repliki).<\/p>\n\n<h2>Typowe problemy i sposoby ich rozwi\u0105zania<\/h2>\n<p>Komunikat \u201e<strong>w kierunku upstream wys\u0142ano zbyt du\u017cy nag\u0142\u00f3wek<\/strong>\u201c Rozwi\u0105zuj\u0119 to poprzez zwi\u0119kszenie warto\u015bci proxy_buffer_size oraz, w razie potrzeby, zwi\u0119kszenie liczby proxy_buffers. Je\u015bli na wolnych urz\u0105dzeniach ko\u0144cowych wyst\u0119puj\u0105 przekroczenia limit\u00f3w czasu, umiarkowanie zwi\u0119kszam limity czasu wysy\u0142ania i nieco zwalniam bufory zaj\u0119to\u015bci. Gdy katalog tymczasowy si\u0119 zape\u0142nia, zmniejszam maksymalny rozmiar lub zwi\u0119kszam bufory pami\u0119ci RAM, w zale\u017cno\u015bci od stosunku koszt\u00f3w do korzy\u015bci. Je\u015bli dostarczanie danych przebiega z zaci\u0119ciami, sprawdzam w\u0105skie gard\u0142a we\/wy, obci\u0105\u017cenie procesora oraz rozk\u0142ad <strong>Bufor<\/strong>. W sytuacjach niedoboru zawsze najpierw opieram si\u0119 na danych pomiarowych, a nie na og\u00f3lnym podwojeniu warto\u015bci.<\/p>\n\n<h2>Podsumowanie: Moje punkty kontrolne dotycz\u0105ce buforowania proxy w NGINX<\/h2>\n<p>Najpierw zdefiniuj\u0119 typowe <strong>Rozmiary odpowiedzi<\/strong>, obci\u0105\u017cenie szczytowe i profile klient\u00f3w, zanim w og\u00f3le zajm\u0119 si\u0119 buforami. Nast\u0119pnie ustalam wystarczaj\u0105co du\u017cy bufor nag\u0142\u00f3wka, aby unikn\u0105\u0107 niepotrzebnych b\u0142\u0119d\u00f3w. Bufory tre\u015bci wymiaruj\u0119 tak, aby typowe odpowiedzi pozostawa\u0142y w pami\u0119ci RAM, a jedynie wyj\u0105tki trafia\u0142y do <strong>Dysk<\/strong> spadaj\u0105. Ustawiam Busy Buffers tak, aby transfery przebiega\u0142y p\u0142ynnie, bez marnowania pami\u0119ci. Na koniec sprawdzam wszystko za pomoc\u0105 test\u00f3w obci\u0105\u017ceniowych i monitoringu, a\u017c op\u00f3\u017anienie, przepustowo\u015b\u0107 i zapotrzebowanie na pami\u0119\u0107 osi\u0105gn\u0105 niezawodny <strong>Windows<\/strong> k\u0142amstwo.<\/p>","protected":false},"excerpt":{"rendered":"<p>Wyja\u015bnienie buforowania proxy w NGINX: jak w praktyce zoptymalizowa\u0107 wydajno\u015b\u0107, zu\u017cycie pami\u0119ci i konfiguracj\u0119 odwrotnego proxy.<\/p>","protected":false},"author":1,"featured_media":21144,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[834],"tags":[],"class_list":["post-21151","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-plesk-webserver-plesk-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"134","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"NGINX Buffering","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"21144","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/comments?post=21151"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21151\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/21144"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=21151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=21151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=21151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}