{"id":27046,"date":"2021-03-09T19:40:05","date_gmt":"2021-03-09T18:40:05","guid":{"rendered":"https:\/\/www.linuxboxen.dk\/?page_id=27046"},"modified":"2021-03-09T19:40:05","modified_gmt":"2021-03-09T18:40:05","slug":"nginx-mod_proxy","status":"publish","type":"page","link":"https:\/\/www.linuxboxen.dk\/?page_id=27046","title":{"rendered":"Nginx mod_proxy"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2120 alignnone\" src=\"https:\/\/www.linuxboxen.dk\/wp-content\/uploads\/2020\/01\/NGINX-logo-rgb-large.png\" alt=\"\" width=\"501\" height=\"168\" \/>Proxy<\/p>\n<h3>Mod_proxy hvad er det ?<\/h3>\n<p>Nginx er normalt en meget hurtig webserver, men den kan ikke selv CGI\/PHP som Apache kan. Men den kan ogs\u00e5 bruges til andre ting som proxy cache service hvis der er mange brugere. Eller du kan bruge den som proxy server til services som sider p\u00e5 andre porte. Jeg vil her vise et eksempel p\u00e5 brug af mod_proxy.<\/p>\n<p>Proxy er en type af server\/service som kan bruges til flere ting. En applications entry point eller som ren proxy. Den smarte del af proxy eksempel vist, er n\u00e5r du \u00f8nsker adgang til en web service som k\u00f8re p\u00e5 en anden port og ikke p\u00e5 port 80 eller ssl port 443.<\/p>\n<p>Default overf\u00f8re to headers i proxy headers Host og Connection. For at \u00e6ndre default skal du bruge proxy_set_header parameteren i din location.<\/p>\n<p>Her er det en service som k\u00f8re p\u00e5 port 8000 p\u00e5 localhost.<\/p>\n<p>Alle request til http:\/\/minside.dk\/ vil blive sendt u\u00e6ndret til localhost p\u00e5 port 8000. Det er det originale request bliver sendt. Hvis der IKKE er en &#8216;\/&#8217; i slutningen af proxy_pass parameteren.<\/p>\n<pre><code>location \/ {\n proxy_pass http:\/\/localhost:8000;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n}<\/code><\/pre>\n<p>Det er ogs\u00e5 muligt at bruge <strong>proxy_pass http:\/\/localhost:8000\/uri\/<\/strong> med en path p\u00e5.<\/p>\n<p>For at g\u00f8re det rigtig smart er det muligt at have et https indgang. P\u00e5 den m\u00e5de har du lavet ssl med en http backend server, rigtig smart.<\/p>\n<pre><code>server {\n  server_name minside.dk;\n  listen 443 ssl;<\/code><code>\n  ssl_certificate \/etc\/ssl\/certs\/server.crt;\n  ssl_certificate_key \/etc\/ssl\/certs\/server.key;<\/code><code>\n  #...\n  location \/<\/code><code> {\n    proxy_pass http:\/\/localhost:8000;\n    proxy_set_header Host $host;\n    proxy_set_header X-Real-IP $remote_addr;\n  }\n}<\/code><\/pre>\n<p>Men lige s\u00e5 simpelt det ser ud er der nogle faldgruber.<\/p>\n<p>Simple location virker s\u00e5 l\u00e6nge du skriver en uri til proxy_pass som vist her. En meget vigtig ting her er at der er et &#8216;\/&#8217; efter porten nr her 8000. NGINX vil nu fjerne dit prefix her \/foo fra uri og sende resten til backend serveren.<\/p>\n<p>S\u00e5 <code>http:\/\/minside.dk:80\/foo\/bar<\/code> vil blive sent til backend som <code>http:\/\/localhost:8000\/bar<\/code>. Det er vigtigt at huske.<\/p>\n<pre><code>location \/foo\/ {\n  proxy_pass http:\/\/localhost:8000<strong>\/<\/strong>;\n}\n<\/code><\/pre>\n<p>Hvis du <strong>ikke<\/strong> vil have den fjerne location stedet skal du bruge.<\/p>\n<pre><code>location \/foo\/ {\n  proxy_pass http:\/\/localhost:8000;\n}<\/code><\/pre>\n<p>S\u00e5 <code>http:\/\/minside.dk:80\/foo\/bar<\/code> vil blive sent til backend som <code>http:\/\/localhost:8000\/foo\/bar<\/code>.<\/p>\n<p>Det er vigtigt at huske.<\/p>\n<p>&nbsp;<\/p>\n<blockquote><p><b>F\u00f8r version 1.1.12, hvis <\/b><code style=\"font-weight: bold;\">proxy_pass<\/code><b> er brugt UDEN URI, Det orginale request vil blive send over i sted for at \u00e6ndre den i nogle tilf\u00e6lde.<\/b><\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<h3>Valg af udadg\u00e5ende ip adresse.<\/h3>\n<p>I alle de eksempler pt har jeg brugt localhost til proxy_pass. Du skal ikke bruge ip adresser eller localhost. Du kan angive et andet domain hvis du vil. Der er virkelig mange muligheder.<\/p>\n<pre><code>location \/ {\n  proxy_pass http:\/\/andetdomain.dk:8000;\n}<\/code><\/pre>\n<p>Hvis dette domain resolver til flere adresser bruger nginx round robin.<\/p>\n<p>Man kan ogs\u00e5 bruge rewrite i location settings.<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_27046\" class=\"pvc_stats all  \" data-element-id=\"27046\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.linuxboxen.dk\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Proxy Mod_proxy hvad er det ? Nginx er normalt en meget hurtig webserver, men den kan ikke selv CGI\/PHP som Apache kan. Men den kan ogs\u00e5 bruges til andre ting som proxy cache service hvis der er mange brugere. Eller du kan bruge den som proxy server til services som sider p\u00e5 andre porte. Jeg [&hellip;]<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_27046\" class=\"pvc_stats all  \" data-element-id=\"27046\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.linuxboxen.dk\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"class_list":["post-27046","page","type-page","status-publish","hentry"],"a3_pvc":{"activated":true,"total_views":44,"today_views":0},"_links":{"self":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/pages\/27046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=27046"}],"version-history":[{"count":0,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/pages\/27046\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=27046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}