{"id":161,"date":"2026-05-15T18:21:09","date_gmt":"2026-05-15T16:21:09","guid":{"rendered":"https:\/\/gorankostic.com\/blog\/?p=161"},"modified":"2026-05-15T18:21:10","modified_gmt":"2026-05-15T16:21:10","slug":"nginx-reverse-proxy","status":"publish","type":"post","link":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/","title":{"rendered":"Nginx Reverse Proxy"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Nginx Reverse Proxy<\/h1>\n\n\n\n<p><strong>Excerpt:<\/strong> <br><a href=\"https:\/\/nginx.org\/?utm_source=chatgpt.com\">Nginx<\/a> reverse proxy je standardno i veoma pouzdano re\u0161enje za rutiranje saobra\u0107aja ka internim aplikacijama, API servisima, Node.js procesima, WordPress instancama i drugim web sistemima iza jednog servera.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nginx Reverse Proxy<\/h2>\n\n\n\n<p>Nginx reverse proxy se koristi kada jedan javni server treba da prima HTTP\/HTTPS saobra\u0107aj i prosle\u0111uje ga ka aplikacijama koje rade iza njega. Te aplikacije mogu biti Node.js servisi, Docker container-i, WordPress instalacije, API aplikacije ili interni alati.<\/p>\n\n\n\n<p>Osnovna ideja je da korisnik pristupa domenu, na primer <code>app.example.com<\/code>, dok Nginx u pozadini prosle\u0111uje zahtev na interni servis kao \u0161to je <code>127.0.0.1:3000<\/code> ili Docker service name. Korisnik ne vidi internu strukturu sistema, ve\u0107 samo uredan javni URL.<\/p>\n\n\n\n<p>Nginx je posebno koristan kada vi\u0161e aplikacija radi na istom serveru. Svaka aplikacija mo\u017ee imati svoj domen ili subdomen, dok Nginx odlu\u010duje gde se koji request \u0161alje. Tako se dobija centralizovan routing bez potrebe da se svaki servis direktno izla\u017ee internetu.<\/p>\n\n\n\n<p>Kod Node.js aplikacija Nginx se \u010desto koristi kao stabilan sloj ispred aplikacije. Node proces slu\u0161a interni port, dok Nginx preuzima HTTPS, domen, header-e, stati\u010dki routing i osnovnu za\u0161titu. To je mnogo bolje nego direktno izlaganje aplikacionog porta javnosti.<\/p>\n\n\n\n<p>SSL konfiguracija je va\u017ean deo Nginx reverse proxy setup-a. Sertifikati se naj\u010de\u0161\u0107e vezuju za server block, a Nginx preuzima HTTPS komunikaciju sa korisnikom. Interna komunikacija ka aplikaciji mo\u017ee ostati HTTP ako je servis na istom serveru ili unutar privatne mre\u017ee.<\/p>\n\n\n\n<p>Header-i moraju biti pravilno prosle\u0111eni. Aplikacija \u010desto mora znati originalni host, IP adresu korisnika i da li je zahtev do\u0161ao preko HTTPS-a. Zato su <code>Host<\/code>, <code>X-Real-IP<\/code>, <code>X-Forwarded-For<\/code> i <code>X-Forwarded-Proto<\/code> \u010desti elementi dobre proxy konfiguracije.<\/p>\n\n\n\n<p>Kod WebSocket i real-time aplikacija potrebna su dodatna pode\u0161avanja za <code>Upgrade<\/code> i <code>Connection<\/code> header-e. Bez toga aplikacija mo\u017ee delovati da radi, ali funkcije koje zavise od stalne konekcije mogu pucati ili se pona\u0161ati nestabilno.<\/p>\n\n\n\n<p>Nginx je veoma mo\u0107an, ali tra\u017ei disciplinu u konfiguraciji. Server block-ovi, SSL putanje, redirect pravila, proxy_pass vrednosti, cache pode\u0161avanja i include fajlovi moraju biti jasno organizovani. Lo\u0161e strukturisan Nginx setup vremenom postaje te\u017eak za odr\u017eavanje.<\/p>\n\n\n\n<p>Debugging se naj\u010de\u0161\u0107e svodi na proveru DNS-a, SSL sertifikata, Nginx error logova, portova i statusa backend aplikacije. Gre\u0161ka <code>502 Bad Gateway<\/code> obi\u010dno zna\u010di da Nginx radi, ali ne mo\u017ee da do\u0111e do servisa kome treba da prosledi zahtev.<\/p>\n\n\n\n<p>Dobro pode\u0161en Nginx reverse proxy daje stabilan, brz i fleksibilan ulazni sloj za produkcione web sisteme. Kada su domeni, SSL, portovi, header-i i backend servisi pravilno povezani, Nginx ostaje jedno od najpouzdanijih re\u0161enja za ozbiljno web rutiranje.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nginx reverse proxy je standardno i veoma pouzdano re\u0161enje za rutiranje saobra\u0107aja ka internim aplikacijama, API servisima, Node.js procesima, WordPress instancama i drugim web [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,8],"tags":[],"class_list":["post-161","post","type-post","status-publish","format-standard","hentry","category-infrastructure","category-reverse-proxy-ssl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Nginx Reverse Proxy - Goran Kostic Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nginx Reverse Proxy\" \/>\n<meta property=\"og:description\" content=\"Nginx reverse proxy je standardno i veoma pouzdano re\u0161enje za rutiranje saobra\u0107aja ka internim aplikacijama, API servisima, Node.js procesima, WordPress instancama i drugim web [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/\" \/>\n<meta property=\"og:site_name\" content=\"Goran Kostic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-15T16:21:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-15T16:21:10+00:00\" \/>\n<meta name=\"author\" content=\"WebixDesign\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"WebixDesign\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/nginx-reverse-proxy\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/nginx-reverse-proxy\\\/\"},\"author\":{\"name\":\"WebixDesign\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\"},\"headline\":\"Nginx Reverse Proxy\",\"datePublished\":\"2026-05-15T16:21:09+00:00\",\"dateModified\":\"2026-05-15T16:21:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/nginx-reverse-proxy\\\/\"},\"wordCount\":442,\"commentCount\":0,\"articleSection\":[\"INFRASTRUCTURE\",\"Reverse Proxy &amp; SSL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/nginx-reverse-proxy\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/nginx-reverse-proxy\\\/\",\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/nginx-reverse-proxy\\\/\",\"name\":\"Nginx Reverse Proxy - Goran Kostic Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-05-15T16:21:09+00:00\",\"dateModified\":\"2026-05-15T16:21:10+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/nginx-reverse-proxy\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/nginx-reverse-proxy\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/nginx-reverse-proxy\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nginx Reverse Proxy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/\",\"name\":\"Goran Kostic Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\",\"name\":\"WebixDesign\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"caption\":\"WebixDesign\"},\"sameAs\":[\"https:\\\/\\\/gorankostic.com\\\/blog\"],\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/author\\\/webixdesign\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Nginx Reverse Proxy - Goran Kostic Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/","og_locale":"en_US","og_type":"article","og_title":"Nginx Reverse Proxy","og_description":"Nginx reverse proxy je standardno i veoma pouzdano re\u0161enje za rutiranje saobra\u0107aja ka internim aplikacijama, API servisima, Node.js procesima, WordPress instancama i drugim web [&hellip;]","og_url":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/","og_site_name":"Goran Kostic Blog","article_published_time":"2026-05-15T16:21:09+00:00","article_modified_time":"2026-05-15T16:21:10+00:00","author":"WebixDesign","twitter_card":"summary_large_image","twitter_misc":{"Written by":"WebixDesign","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/#article","isPartOf":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/"},"author":{"name":"WebixDesign","@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8"},"headline":"Nginx Reverse Proxy","datePublished":"2026-05-15T16:21:09+00:00","dateModified":"2026-05-15T16:21:10+00:00","mainEntityOfPage":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/"},"wordCount":442,"commentCount":0,"articleSection":["INFRASTRUCTURE","Reverse Proxy &amp; SSL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/","url":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/","name":"Nginx Reverse Proxy - Goran Kostic Blog","isPartOf":{"@id":"https:\/\/gorankostic.com\/blog\/#website"},"datePublished":"2026-05-15T16:21:09+00:00","dateModified":"2026-05-15T16:21:10+00:00","author":{"@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8"},"breadcrumb":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/nginx-reverse-proxy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gorankostic.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Nginx Reverse Proxy"}]},{"@type":"WebSite","@id":"https:\/\/gorankostic.com\/blog\/#website","url":"https:\/\/gorankostic.com\/blog\/","name":"Goran Kostic Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gorankostic.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8","name":"WebixDesign","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","caption":"WebixDesign"},"sameAs":["https:\/\/gorankostic.com\/blog"],"url":"https:\/\/gorankostic.com\/blog\/author\/webixdesign\/"}]}},"_links":{"self":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/comments?post=161"}],"version-history":[{"count":1,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/161\/revisions"}],"predecessor-version":[{"id":162,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/161\/revisions\/162"}],"wp:attachment":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/media?parent=161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/categories?post=161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/tags?post=161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}