{"id":1414,"date":"2016-06-20T17:15:40","date_gmt":"2016-06-20T14:15:40","guid":{"rendered":"http:\/\/www.systemcodegeeks.com\/?p=1414"},"modified":"2016-06-17T09:54:28","modified_gmt":"2016-06-17T06:54:28","slug":"scale-ssl-haproxy-nginx","status":"publish","type":"post","link":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/","title":{"rendered":"How To Scale SSL with HAProxy and Nginx"},"content":{"rendered":"<h2>SSL is CPU Intensive<\/h2>\n<p>If you haven&#8217;t already enabled <a href=\"https:\/\/wakatime.com\/blog\/ngix%20ssl%20optimization\">SSL session caching<\/a>, do <a href=\"https:\/\/wakatime.com\/blog\/ssl%20caching%20howto\">that NOW<\/a>. But what if you have many unique requests and your load balancer is maxing out it&#8217;s CPU? That was the case with WakaTime&#8217;s load balancer, because as you use the <a href=\"https:\/\/wakatime.com\/blog\/https\/\/wakatime.com\/editors\">WakaTime plugins<\/a> you are constantly making requests to our api saying you&#8217;re still working on a project. We had one load balancer terminating SSL in front of multiple app servers running our<a href=\"http:\/\/flask.pocoo.org\/\">Flask app<\/a>. The Flask app servers handled the requests just fine, but the load balancer was maxing out all 16 cores negotiating SSL handshakes.<\/p>\n<h2>Proxying TCP insead of HTTP<\/h2>\n<p>The solution is to proxy TCP instead of HTTP. This way the load balancer no longer terminates SSL, but passes the TCP connection on to your app servers unmodified.<\/p>\n<p>Let&#8217;s say you have two nginx app servers (10.0.0.11 and 10.0.0.12) and one haproxy load balancer (10.0.0.10). First, <a href=\"https:\/\/haproxy.debian.net\/\">install haproxy<\/a>. Then, edit <code>\/etc\/haproxy\/haproxy.cfg<\/code> adding these lines:<\/p>\n<pre class=\"brush:bash\">frontend https-in\r\n    bind *:443\r\n    default_backend https-servers\r\n\r\nbackend https-servers\r\n        mode tcp\r\n        balance roundrobin\r\n        server srv1 10.0.0.11:443\r\n        server srv2 10.0.0.12:443<\/pre>\n<p>With an nginx config like:<\/p>\n<pre class=\"brush:bash\">server {\r\n    server_name  example.com;\r\n    root \/opt\/example\/current\/app;\r\n\r\n    listen 443 ssl http2;\r\n\r\n    ssl_certificate \/etc\/ssl\/example\/ssl.crt;\r\n    ssl_certificate_key \/etc\/ssl\/example\/ssl.key;\r\n\r\n    location \/ {\r\n        include uwsgi_params;\r\n        uwsgi_pass unix:\/tmp\/app.sock;\r\n    }\r\n}<\/pre>\n<p>This tells haproxy to setup a Layer 4 proxy to forward all TCP connections unmodified to the two nginx servers using roundrobin to balance the connections. The nginx app servers will share the load of negotiating SSL and parsing the HTTP requests.<\/p>\n<p><a href=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/06\/load-balancing-haproxy-nginx-small.png\"><img decoding=\"async\" class=\"aligncenter wp-image-1415 size-medium\" src=\"http:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/06\/load-balancing-haproxy-nginx-small-300x168.png\" alt=\"load-balancing-haproxy-nginx-small\" width=\"300\" height=\"168\" srcset=\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/06\/load-balancing-haproxy-nginx-small-300x168.png 300w, https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/06\/load-balancing-haproxy-nginx-small-768x430.png 768w, https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/06\/load-balancing-haproxy-nginx-small.png 800w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong>One catch though<\/strong>, your nginx app servers will see the requests coming from the IP address of your haproxy load balancer instead of the originating client. To fix this, enable Proxy Protocol to send the originating client&#8217;s IP address to your nginx app servers.<\/p>\n<h2>Forwarding the User&#8217;s Real IP using Proxy Protocol<\/h2>\n<p><a href=\"http:\/\/www.haproxy.org\/download\/1.7\/doc\/proxy-protocol.txt\">Proxy Protocol<\/a> forwards the originating client&#8217;s IP address from haproxy to nginx without having to modify the HTTP request headers. To enable Proxy Protocol in haproxy, add the <code>send-proxy<\/code> keyword to your <code>\/etc\/haproxy\/haproxy.cfg<\/code> file:<\/p>\n<pre class=\"brush:bash\">frontend https-in\r\n    bind *:443\r\n    default_backend https-servers\r\n\r\nbackend https-servers\r\n        mode tcp\r\n        balance roundrobin\r\n        server srv1 10.0.0.11:443 send-proxy\r\n        server srv2 10.0.0.12:443 send-proxy<\/pre>\n<p>And tell nginx to receive the client&#8217;s real IP using proxy protocol and add it to the HTTP request:<\/p>\n<pre class=\"brush:bash\">server {\r\n    server_name  example.com;\r\n    root \/opt\/example\/current\/app;\r\n\r\n    listen 443 ssl http2 proxy_protocol;\r\n\r\n    set_real_ip_from 10.0.0.10\/32;\r\n    real_ip_header proxy_protocol;\r\n\r\n    ssl_certificate \/etc\/ssl\/example\/ssl.crt;\r\n    ssl_certificate_key \/etc\/ssl\/example\/ssl.key;\r\n\r\n    location \/ {\r\n        include uwsgi_params;\r\n        uwsgi_pass unix:\/tmp\/app.sock;\r\n    }\r\n}<\/pre>\n<p>Notice how we told nginx to trust the IP address of your haproxy load balancer <code>10.0.0.10<\/code> to give us the client&#8217;s real IP. SSL is distributed among your two nginx app servers, and your nginx log files show the correct client IP address for each request.<\/p>\n<p>Now you can scale to infinity!*<\/p>\n<p>* Your haproxy process is still limited to a certain number of connections (<code>ulimit<\/code>).<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"https:\/\/wakatime.com\/blog\/34-how-to-scale-ssl-with-haproxy-and-nginx\">How To Scale SSL with HAProxy and Nginx<\/a> from our <a href=\"http:\/\/www.systemcodegeeks.com\/join-us\/scg\/\">SCG partner<\/a> Alan Hamlett\u00a0at the <a href=\"http:\/\/wakatime.com\/blog\/\">Wakatime<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>SSL is CPU Intensive If you haven&#8217;t already enabled SSL session caching, do that NOW. But what if you have many unique requests and your load balancer is maxing out it&#8217;s CPU? That was the case with WakaTime&#8217;s load balancer, because as you use the WakaTime plugins you are constantly making requests to our api &hellip;<\/p>\n","protected":false},"author":27,"featured_media":195,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[73],"class_list":["post-1414","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nginx","tag-haproxy"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How To Scale SSL with HAProxy and Nginx - System Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"SSL is CPU Intensive If you haven&#039;t already enabled SSL session caching, do that NOW. But what if you have many unique requests and your load balancer is\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How To Scale SSL with HAProxy and Nginx - System Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"SSL is CPU Intensive If you haven&#039;t already enabled SSL session caching, do that NOW. But what if you have many unique requests and your load balancer is\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/\" \/>\n<meta property=\"og:site_name\" content=\"System Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/systemcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-20T14:15:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alan Hamlett\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@systemcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@systemcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alan Hamlett\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/\"},\"author\":{\"name\":\"Alan Hamlett\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/f694edeefe05fd4b43e4f955c7377d1a\"},\"headline\":\"How To Scale SSL with HAProxy and Nginx\",\"datePublished\":\"2016-06-20T14:15:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/\"},\"wordCount\":404,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg\",\"keywords\":[\"HAProxy\"],\"articleSection\":[\"NGINX\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/\",\"url\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/\",\"name\":\"How To Scale SSL with HAProxy and Nginx - System Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg\",\"datePublished\":\"2016-06-20T14:15:40+00:00\",\"description\":\"SSL is CPU Intensive If you haven't already enabled SSL session caching, do that NOW. But what if you have many unique requests and your load balancer is\",\"breadcrumb\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#primaryimage\",\"url\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg\",\"contentUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.systemcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web Servers\",\"item\":\"https:\/\/www.systemcodegeeks.com\/category\/web-servers\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"NGINX\",\"item\":\"https:\/\/www.systemcodegeeks.com\/category\/web-servers\/nginx\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"How To Scale SSL with HAProxy and Nginx\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#website\",\"url\":\"https:\/\/www.systemcodegeeks.com\/\",\"name\":\"System Code Geeks\",\"description\":\"Operating System Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.systemcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.systemcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/systemcodegeeks\",\"https:\/\/x.com\/systemcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/f694edeefe05fd4b43e4f955c7377d1a\",\"name\":\"Alan Hamlett\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7b6c43955f34577f396ea7025bf5b34b9310b47813f56e8929ffe7b6ddb7bea9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7b6c43955f34577f396ea7025bf5b34b9310b47813f56e8929ffe7b6ddb7bea9?s=96&d=mm&r=g\",\"caption\":\"Alan Hamlett\"},\"url\":\"https:\/\/www.systemcodegeeks.com\/author\/alan-hamlett\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How To Scale SSL with HAProxy and Nginx - System Code Geeks - 2026","description":"SSL is CPU Intensive If you haven't already enabled SSL session caching, do that NOW. But what if you have many unique requests and your load balancer is","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:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/","og_locale":"en_US","og_type":"article","og_title":"How To Scale SSL with HAProxy and Nginx - System Code Geeks - 2026","og_description":"SSL is CPU Intensive If you haven't already enabled SSL session caching, do that NOW. But what if you have many unique requests and your load balancer is","og_url":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/","og_site_name":"System Code Geeks","article_publisher":"https:\/\/www.facebook.com\/systemcodegeeks","article_published_time":"2016-06-20T14:15:40+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg","type":"image\/jpeg"}],"author":"Alan Hamlett","twitter_card":"summary_large_image","twitter_creator":"@systemcodegeeks","twitter_site":"@systemcodegeeks","twitter_misc":{"Written by":"Alan Hamlett","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#article","isPartOf":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/"},"author":{"name":"Alan Hamlett","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/f694edeefe05fd4b43e4f955c7377d1a"},"headline":"How To Scale SSL with HAProxy and Nginx","datePublished":"2016-06-20T14:15:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/"},"wordCount":404,"commentCount":0,"publisher":{"@id":"https:\/\/www.systemcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#primaryimage"},"thumbnailUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg","keywords":["HAProxy"],"articleSection":["NGINX"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/","url":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/","name":"How To Scale SSL with HAProxy and Nginx - System Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.systemcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#primaryimage"},"image":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#primaryimage"},"thumbnailUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg","datePublished":"2016-06-20T14:15:40+00:00","description":"SSL is CPU Intensive If you haven't already enabled SSL session caching, do that NOW. But what if you have many unique requests and your load balancer is","breadcrumb":{"@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#primaryimage","url":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg","contentUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2016\/01\/nginx-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.systemcodegeeks.com\/web-servers\/nginx\/scale-ssl-haproxy-nginx\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.systemcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Web Servers","item":"https:\/\/www.systemcodegeeks.com\/category\/web-servers\/"},{"@type":"ListItem","position":3,"name":"NGINX","item":"https:\/\/www.systemcodegeeks.com\/category\/web-servers\/nginx\/"},{"@type":"ListItem","position":4,"name":"How To Scale SSL with HAProxy and Nginx"}]},{"@type":"WebSite","@id":"https:\/\/www.systemcodegeeks.com\/#website","url":"https:\/\/www.systemcodegeeks.com\/","name":"System Code Geeks","description":"Operating System Developers Resource Center","publisher":{"@id":"https:\/\/www.systemcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.systemcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.systemcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.systemcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.systemcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/systemcodegeeks","https:\/\/x.com\/systemcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/f694edeefe05fd4b43e4f955c7377d1a","name":"Alan Hamlett","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.systemcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/7b6c43955f34577f396ea7025bf5b34b9310b47813f56e8929ffe7b6ddb7bea9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7b6c43955f34577f396ea7025bf5b34b9310b47813f56e8929ffe7b6ddb7bea9?s=96&d=mm&r=g","caption":"Alan Hamlett"},"url":"https:\/\/www.systemcodegeeks.com\/author\/alan-hamlett\/"}]}},"_links":{"self":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/posts\/1414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/comments?post=1414"}],"version-history":[{"count":0,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/posts\/1414\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/media\/195"}],"wp:attachment":[{"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/media?parent=1414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/categories?post=1414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.systemcodegeeks.com\/wp-json\/wp\/v2\/tags?post=1414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}