{"id":2355,"date":"2020-02-28T13:26:03","date_gmt":"2020-02-28T12:26:03","guid":{"rendered":"https:\/\/geko2.factoryfy.com\/?p=744"},"modified":"2021-11-03T17:31:48","modified_gmt":"2021-11-03T16:31:48","slug":"reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp","status":"publish","type":"post","link":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/","title":{"rendered":"Reenviar IP real a un NGINX detr\u00e1s de un load balancer GCP"},"content":{"rendered":"<p style=\"text-align: center;\"><em>Este art\u00edculo se centra en los load balancer GCP, pero puede aplicarse a otros proveedores cloud \/ servidores proxy.<\/em><\/p>\n<h2>Introducci\u00f3n<\/h2>\n<p>En <a href=\"https:\/\/geko.cloud\/es\/\">Geko<\/a> trabajamos en un proyecto que requer\u00eda un servidor nginx para poder incluir en la lista blanca algunas direcciones IP p\u00fablicas mientras negaba todas las dem\u00e1s conexiones. Si bien esto puede abordarse utilizando las reglas de firewall de GCP, hubo otras razones por las cuales fue necesario hacerlo a trav\u00e9s de la configuraci\u00f3n de nginx en lugar de usar las reglas de GCP.<\/p>\n<p><span style=\"color: #000000;\">El problema es que nginx no mostraba la <strong>direcci\u00f3n IP real<\/strong> correcta de la solicitud en el encabezado <strong>REMOTE_ADDR<\/strong>.<\/span><\/p>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{\">130.211.0.230 - - [23\/Jan\/2020:09:44:51 +0000] \"GET \/ HTTP\/1.1\" 404 \"108.26.106.168, 36.129.221.25\"<\/pre>\n<\/div>\n<h2><span style=\"color: #000000;\"><strong>Escenario<\/strong><\/span><\/h2>\n<p>Usar\u00e9 un escenario muy simple:<\/p>\n<ul>\n<li><span style=\"color: #000000;\">Instancia privada de Google Compute que ejecuta dos contenedores docker: nginx y una aplicaci\u00f3n basada en php<\/span><\/li>\n<li>Public GCP Load Balancer dirigido al contenedor nginx.<\/li>\n<\/ul>\n<p>Direcciones IP falsas utilizadas en esta publicaci\u00f3n:<\/p>\n<ul>\n<li>Solicitudes de origen del usuario: 108.26.106.168<\/li>\n<li>IP p\u00fablica de GCP Load Balancer: 36.129.221.25<\/li>\n<li>Rango privado de GCP Load Balancer: 130.211.0.0\/22 and 35.191.0.0\/16<\/li>\n<\/ul>\n<p>Eso es.<\/p>\n<h2>El problema<\/h2>\n<p><span style=\"color: #000000;\">Repasemos r\u00e1pidamente c\u00f3mo funciona un load balancer<\/span><span style=\"color: #000000;\">: cuando se recibe una solicitud de un cliente remoto, se finaliza y se emite una nueva solicitud desde el LB contra el backend, reenviando un conjunto de headers (haz clic en <a href=\"https:\/\/cloud.google.com\/load-balancing\/docs\/https#target-proxies\">GCP<\/a> y <a href=\"https:\/\/docs.aws.amazon.com\/elasticloadbalancing\/latest\/classic\/x-forwarded-headers.html\">AWS<\/a> para obtener detalles espec\u00edficos) son atrapados por el servicio subyacente.<\/span><\/p>\n<p><span style=\"color: #000000;\">Cuando colocas un servidor nginx detr\u00e1s del LB, recibe la IP privada del Load Balancer como direcci\u00f3n remota en lugar de la IP p\u00fablica real del usuario.<\/span><\/p>\n<p><span style=\"color: #000000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-828\" src=\"https:\/\/geko2.factoryfy.com\/wp-content\/uploads\/travolta-1.gif\" alt=\"\" width=\"426\" height=\"213\" \/><\/span><\/p>\n<p>Si echamos un vistazo a los registros de nginx, podemos ver esto:<\/p>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{\">130.211.0.130 - - [23\/Jan\/2020:09:02:51 +0000] \"GET \/ HTTP\/1.1\" 200 \"108.26.106.168, 36.129.221.25\"<\/pre>\n<\/div>\n<p>\u00a1Espera! La direcci\u00f3n IP del usuario aparece en esa cadena al final del registro. \u00bfPor qu\u00e9 c*j***s est\u00e1 tomando nginx el rango privado de LB como la direcci\u00f3n IP de origen? Bueno, esto se debe a que el LB est\u00e1 haciendo una nueva solicitud.<\/p>\n<h2><span style=\"color: #000000;\"><strong>\u00bfC\u00f3mo resolvimos el problema?<\/strong><\/span><\/h2>\n<p>La primera IP en el registro proviene del encabezado <strong>REMOTE_ADDR<\/strong>. Necesitamos reemplazar el valor de este header con la direcci\u00f3n IP real recibida en el header<strong> X-Fordered-For.<\/strong><\/p>\n<p>Pero hay algo m\u00e1s que debemos tratar con este segundo header: en realidad no solo viene con la IP real del usuario sino tambi\u00e9n con la direcci\u00f3n p\u00fablica de Load Balancer.<\/p>\n<p>Para resolver todo esto, utilizaremos el <span style=\"color: #000000;\"><a href=\"https:\/\/nginx.org\/en\/docs\/http\/ngx_http_realip_module.html\"><strong>real_ip module<\/strong><\/a><\/span>. Vamos a aplicar la siguiente configuraci\u00f3n en nginx.conf dentro del bloque \u00abserver\u00bb:<\/p>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{\">set_real_ip_from\u00a036.129.221.25\/32; \/\/ LB Public IP address\r\nset_real_ip_from 130.211.0.0\/22; \/\/ Private IP range for GCP Load Balancers\r\nset_real_ip_from 35.191.0.0\/16; \/\/Private IP range for GCP Load Balancers\r\nreal_ip_header X-Forwarded-For;\r\nreal_ip_recursive on;<\/pre>\n<\/div>\n<p>Vamos a dividirlo:<\/p>\n<ul>\n<li><span style=\"color: #000000;\"><strong>set_real_ip_from<\/strong>: Indicar a nginx que conf\u00ede en las IP p\u00fablicas y privadas de GCP LB.<\/span><\/li>\n<li><span style=\"color: #000000;\"><strong>real_ip_header<\/strong>: Reemplaza el encabezado REMOTE_ADDR con los valores de X-Fordered-For.<\/span><\/li>\n<li><span style=\"color: #000000;\"><strong>real_ip_recursive on<\/strong>: Filtra las IPs confiables de la cadena, por lo tanto, la \u00faltima direcci\u00f3n no confiable de la cadena se utilizar\u00e1 como la direcci\u00f3n remota.<\/span><\/li>\n<\/ul>\n<p>Finalmente pru\u00e9balo:<\/p>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{\">108.26.106.168 - - [23\/Jan\/2020:09:44:51 +0000] \"GET \/ HTTP\/1.1\" 200 \"108.26.106.168, 36.129.221.25\"<\/pre>\n<\/div>\n<h2><strong>Conclusi\u00f3n<\/strong><\/h2>\n<p>Como podemos ver, la soluci\u00f3n fue bastante sencilla, pero aun as\u00ed llev\u00f3 un tiempo rebuscar en la documentaci\u00f3n para comprender c\u00f3mo Load Balancer reenviaba los encabezados y c\u00f3mo podemos ajustar nginx para reescribir los encabezados para lograr el comportamiento esperado.<\/p>\n<p>Sin embargo, fue una buena experiencia de aprendizaje.<\/p>\n<p><span style=\"color: #000000;\">Fuentes: <a href=\"https:\/\/nginx.org\/en\/docs\/http\/ngx_http_realip_module.html\"><strong>https:\/\/nginx.org\/en\/docs\/http\/ngx_http_realip_module.html<\/strong><\/a><\/span><\/p>\n<hr \/>\n<p>Espero que hayas disfrutado de este post y te animo a que <a href=\"https:\/\/geko.cloud\/es\/blog\/\">revises nuestro blog para leer otros posts<\/a> que puedan ser de tu inter\u00e9s, por ejemplo \u00ab<a href=\"https:\/\/geko.cloud\/es\/que-es-cloud\/\">Qu\u00e9 es el cloud?<\/a>\u00ab. <a href=\"https:\/\/geko.cloud\/es\/contacto\/\">No dudes en contactarnos<\/a> si deseas que te ayudemos en tus proyectos.<\/p>\n<p>\u00a1Nos vemos en la pr\u00f3xima entrada!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este art\u00edculo se centra en los load balancer GCP, pero puede aplicarse a otros proveedores cloud \/ servidores proxy. Introducci\u00f3n En Geko trabajamos en un proyecto que requer\u00eda un servidor nginx para poder incluir en la lista blanca algunas direcciones IP p\u00fablicas mientras negaba todas las dem\u00e1s conexiones. Si bien esto puede abordarse utilizando las [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":2356,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[18],"tags":[52,57],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Forward IP to a NGINX behind GCP Load Balancer<\/title>\n<meta name=\"description\" content=\"Normalmente cuando lees la cabecera REMOTE_ADDR de NGINX recibir\u00e1s la IP privada de LB en lugar de la direcci\u00f3n IP real del solicitante. En este post vamos a explicar c\u00f3mo reenviar la IP real del solicitante a un servidor nginx sentado detr\u00e1s de un equilibrador de carga en Google Cloud.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Forward IP to a NGINX behind GCP Load Balancer\" \/>\n<meta property=\"og:description\" content=\"Usually when you read the REMOTE_ADDR header from NGINX you will receive the LB private IP instead of the real IP address of the requester. In this post we will explain how to forward the requester real ip to a nginx server sitting behind a Load Balancer in Google Cloud.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/\" \/>\n<meta property=\"og:site_name\" content=\"Geko Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2020-02-28T12:26:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-03T16:31:48+00:00\" \/>\n<meta name=\"author\" content=\"Xavi Miranda\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/geko.cloud\/wp-content\/uploads\/nginx_gcp_featured_2.png\" \/>\n<meta name=\"twitter:creator\" content=\"@geko_cloud\" \/>\n<meta name=\"twitter:site\" content=\"@geko_cloud\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/\"},\"author\":{\"name\":\"Xavi Miranda\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/d496fb33d6ad37fe134ef9fb225dc732\"},\"headline\":\"Reenviar IP real a un NGINX detr\u00e1s de un load balancer GCP\",\"datePublished\":\"2020-02-28T12:26:03+00:00\",\"dateModified\":\"2021-11-03T16:31:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/\"},\"wordCount\":609,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/nginx_gcp_featured_2.png\",\"keywords\":[\"Google Cloud\",\"Ngnix\"],\"articleSection\":[\"Labs\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/\",\"url\":\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/\",\"name\":\"Forward IP to a NGINX behind GCP Load Balancer\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/nginx_gcp_featured_2.png\",\"datePublished\":\"2020-02-28T12:26:03+00:00\",\"dateModified\":\"2021-11-03T16:31:48+00:00\",\"description\":\"Normalmente cuando lees la cabecera REMOTE_ADDR de NGINX recibir\u00e1s la IP privada de LB en lugar de la direcci\u00f3n IP real del solicitante. En este post vamos a explicar c\u00f3mo reenviar la IP real del solicitante a un servidor nginx sentado detr\u00e1s de un equilibrador de carga en Google Cloud.\",\"breadcrumb\":{\"@id\":\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#primaryimage\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/nginx_gcp_featured_2.png\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/nginx_gcp_featured_2.png\",\"width\":898,\"height\":235,\"caption\":\"ngnix google cloud logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/geko.cloud\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reenviar IP real a un NGINX detr\u00e1s de un load balancer GCP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/geko.cloud\/es\/#website\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"name\":\"Geko Cloud\",\"description\":\"Servicios de consultor\u00eda cloud y devops\",\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/geko.cloud\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/geko.cloud\/es\/#organization\",\"name\":\"Geko Cloud\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"width\":1650,\"height\":809,\"caption\":\"Geko Cloud\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/geko_cloud\",\"https:\/\/www.instagram.com\/gekocloud\/\",\"https:\/\/www.linkedin.com\/company\/gekocloud\",\"https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/d496fb33d6ad37fe134ef9fb225dc732\",\"name\":\"Xavi Miranda\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/aa0e61120a4b0a629b0679d9e341758d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/aa0e61120a4b0a629b0679d9e341758d?s=96&d=mm&r=g\",\"caption\":\"Xavi Miranda\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Forward IP to a NGINX behind GCP Load Balancer","description":"Normalmente cuando lees la cabecera REMOTE_ADDR de NGINX recibir\u00e1s la IP privada de LB en lugar de la direcci\u00f3n IP real del solicitante. En este post vamos a explicar c\u00f3mo reenviar la IP real del solicitante a un servidor nginx sentado detr\u00e1s de un equilibrador de carga en Google Cloud.","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:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/","og_locale":"es_ES","og_type":"article","og_title":"Forward IP to a NGINX behind GCP Load Balancer","og_description":"Usually when you read the REMOTE_ADDR header from NGINX you will receive the LB private IP instead of the real IP address of the requester. In this post we will explain how to forward the requester real ip to a nginx server sitting behind a Load Balancer in Google Cloud.","og_url":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/","og_site_name":"Geko Cloud","article_published_time":"2020-02-28T12:26:03+00:00","article_modified_time":"2021-11-03T16:31:48+00:00","author":"Xavi Miranda","twitter_card":"summary_large_image","twitter_image":"https:\/\/geko.cloud\/wp-content\/uploads\/nginx_gcp_featured_2.png","twitter_creator":"@geko_cloud","twitter_site":"@geko_cloud","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#article","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/"},"author":{"name":"Xavi Miranda","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/d496fb33d6ad37fe134ef9fb225dc732"},"headline":"Reenviar IP real a un NGINX detr\u00e1s de un load balancer GCP","datePublished":"2020-02-28T12:26:03+00:00","dateModified":"2021-11-03T16:31:48+00:00","mainEntityOfPage":{"@id":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/"},"wordCount":609,"commentCount":0,"publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"image":{"@id":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/nginx_gcp_featured_2.png","keywords":["Google Cloud","Ngnix"],"articleSection":["Labs"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/","url":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/","name":"Forward IP to a NGINX behind GCP Load Balancer","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#primaryimage"},"image":{"@id":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/nginx_gcp_featured_2.png","datePublished":"2020-02-28T12:26:03+00:00","dateModified":"2021-11-03T16:31:48+00:00","description":"Normalmente cuando lees la cabecera REMOTE_ADDR de NGINX recibir\u00e1s la IP privada de LB en lugar de la direcci\u00f3n IP real del solicitante. En este post vamos a explicar c\u00f3mo reenviar la IP real del solicitante a un servidor nginx sentado detr\u00e1s de un equilibrador de carga en Google Cloud.","breadcrumb":{"@id":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#primaryimage","url":"https:\/\/geko.cloud\/wp-content\/uploads\/nginx_gcp_featured_2.png","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/nginx_gcp_featured_2.png","width":898,"height":235,"caption":"ngnix google cloud logo"},{"@type":"BreadcrumbList","@id":"https:\/\/geko.cloud\/es\/reenviar-ip-real-a-un-nginx-detras-de-un-load-balancer-gcp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/geko.cloud\/es\/"},{"@type":"ListItem","position":2,"name":"Reenviar IP real a un NGINX detr\u00e1s de un load balancer GCP"}]},{"@type":"WebSite","@id":"https:\/\/geko.cloud\/es\/#website","url":"https:\/\/geko.cloud\/es\/","name":"Geko Cloud","description":"Servicios de consultor\u00eda cloud y devops","publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/geko.cloud\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/geko.cloud\/es\/#organization","name":"Geko Cloud","url":"https:\/\/geko.cloud\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/","url":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","width":1650,"height":809,"caption":"Geko Cloud"},"image":{"@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/geko_cloud","https:\/\/www.instagram.com\/gekocloud\/","https:\/\/www.linkedin.com\/company\/gekocloud","https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ"]},{"@type":"Person","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/d496fb33d6ad37fe134ef9fb225dc732","name":"Xavi Miranda","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/aa0e61120a4b0a629b0679d9e341758d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/aa0e61120a4b0a629b0679d9e341758d?s=96&d=mm&r=g","caption":"Xavi Miranda"}}]}},"_links":{"self":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/2355"}],"collection":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/comments?post=2355"}],"version-history":[{"count":3,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/2355\/revisions"}],"predecessor-version":[{"id":5193,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/posts\/2355\/revisions\/5193"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/media\/2356"}],"wp:attachment":[{"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/media?parent=2355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/categories?post=2355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geko.cloud\/es\/wp-json\/wp\/v2\/tags?post=2355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}