From 55186bbef5c36facaee583a7f93f81243733e351 Mon Sep 17 00:00:00 2001 From: bunkerity Date: Wed, 4 Aug 2021 16:54:59 +0200 Subject: [PATCH] examples improvement - hardened, joomla, kubernetes, load-balancer and moodle --- examples/hardened/README.md | 11 ++++ examples/hardened/architecture.png | Bin 0 -> 8565 bytes examples/joomla/README.md | 11 ++++ examples/joomla/architecture.png | Bin 0 -> 14655 bytes examples/kubernetes/README.md | 16 ++++++ examples/kubernetes/architecture.png | Bin 0 -> 15728 bytes examples/kubernetes/ingress.yml | 66 ++++++++++++++++++++++++ examples/kubernetes/php.yml | 27 +++++----- examples/kubernetes/reverse-proxy.yml | 25 +++++---- examples/load-balancer/README.md | 15 ++++++ examples/load-balancer/architecture.png | Bin 0 -> 15792 bytes examples/moodle/README.md | 11 ++++ examples/moodle/moodle.png | Bin 0 -> 17036 bytes 13 files changed, 159 insertions(+), 23 deletions(-) create mode 100644 examples/hardened/README.md create mode 100644 examples/hardened/architecture.png create mode 100644 examples/joomla/README.md create mode 100644 examples/joomla/architecture.png create mode 100644 examples/kubernetes/README.md create mode 100644 examples/kubernetes/architecture.png create mode 100644 examples/kubernetes/ingress.yml create mode 100644 examples/load-balancer/README.md create mode 100644 examples/load-balancer/architecture.png create mode 100644 examples/moodle/README.md create mode 100644 examples/moodle/moodle.png diff --git a/examples/hardened/README.md b/examples/hardened/README.md new file mode 100644 index 000000000..65f588003 --- /dev/null +++ b/examples/hardened/README.md @@ -0,0 +1,11 @@ +# Hardened + +Example on how you can harden the container executing bunkerized-nginx. See the [documentation](https://bunkerized-nginx.readthedocs.io/en/latest/security_tuning.html#container-hardening) for details. + +## Architecture + + + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/hardened/docker-compose.yml). diff --git a/examples/hardened/architecture.png b/examples/hardened/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..899064a8b3328d701fffd33a2bf9fcf74f115f9f GIT binary patch literal 8565 zcmb7qbwJba+w}|tK^Q86^b`SUL6H;$q@_pK7wLu#=@JyAyGxW#ksPU_Fj@qp1|vpG zjjr+D{NjC{f1f{$#pjOezOQqgbFPJ{tICs;(vdE28 z*}*@Tkec$+kcxhW74YJ!wUmk!1X2}4c4|fhUSD@n&__Zb6zvy(E_FH=SwJB7NEKg5 z!97jZr-1ay(p}gcpfJ(Y@RJ; zO=aB-xB`I$THQlmfTX+JT|9I{f}7h-=FJBIbO}~JXztd z&Hu4h@2E^~SY_Al0cY~OyW&uR3df+3cBlepdoJmaMHxLulaTe&e}K`laXAS_0V zR1M1X;raFTl@$>SbgY`hk;UHXNQRK}^cTyX#@B0$y=n7HO9x}-G26mjhuiZDJ69nP zmrEdC?(XghY%0P}S>>Y{a^0DknWyVY?4NBH7fPT~d?LPX$lf`P^nWc;5oMzpB|lLt z{f;!?bUW1d;{13&fY|l)X!+TljhY7J@3;D$;OmHZ?B9nu{w%Tn=`lbR;UY7*n(3Y5 z74fZ4HcCmn$I6WYuLv@yA!I*DTvD=4Hi9}cGd`FYs_Ao1IP;p!6HWU0Ir;vw?OD1{ zRZ1)Trc;r#XauYA-r8Pe^A9re7e}w0GYzeLgXtiFCt7cKC1)4kos@jRJMBO>4JOF& zK|w(}?Y@?guVX2YAYm9pgf+WC^H(G&|lKffL$hKc6xDprH%d=579_l2;&3H92If9{m#jK~X=SJS+XR0vBrkO|p1f8l$irx6=4 z<$hv$Ho1;Nm7D(vV&99}rTLm-^06cdR;cy;wmt-s_z-P=OY1b~W4EtHG7EZr=f`a| z7k?%9&1sb=a1@J2L4x9ol8@%WU|tqazpv3Px3L~4!n|@26vE~ zocGttZpxnpSmAzU_Mxce`Doy`oyqAs2HZ%Ac0?G*u@V62qF&6ihoajrjWqwBsqgBN z1z{)#Bu=V!$1D=6mWGANN`p>S+BAxW#0||Dp7Q!EfWT^?R*b zw~~5xrl~+3dXNJme^+b4D2)%yVB$GT)UVm)f%TJ*+H5&saxP8eV{iO(8!5WNY$?~X z_KtBk$Mw^QyGA&Tm5A)gsN+wetRJWBdmK!sk%Y9u`HA-((Cv!wQiEDMBcs8r$xD#u zib+VzR!W?^CxC8YW!9c#o=+W6$hZfeanB!={K%jf&3HCxzz1@54}D!Ki@9JdHu$Xybcbnf~`8Dz0&vf25WrPLz;$3 zSOibfeP1b>!P49!y=ZIwC;q3NM`fU>|91h)Lxs@7q8I*^$Dd*(<{V42i&)tti%ru5 zPTZ=f3f-XI1~+W)+37CE)qQLEa|sezjOe%UyCW*F^{WY?Lb{UwSD*%q?87`$K*?Cs zfWtjI-kT>$>dleNp|kGK?3#S)y=cZ?U+sU^(rf5@P($Fd+pN3OSBk8B#;H^0IRlYA zr-DE%N-`ho(`c$<&rY0C5>soX{~FbiB&QUUTTLeA6iPTdLB3U5?8}gk0-!MGIQdLZ zwoHOP`>b{f{ib5MLG67OmW3feTRwJ+B)o(1iKtvV3cPehSdtaF)SurWf?V9H zYgyIh_aN43I-O@e|H|_UfCF5_`iqNg3+@RmF8CVx+*YFcTP>EKsAm0IyAh^m-Y?Sx zEZalKiJ?s5UI2-1v+r+W+x*XtX&+ndu8meICa~cZLhV7BhQkwm;~|g(5$*n@Bk9=5 z+1gQ)d0b*|_OpzOKs6166X^c(nlG9fMqr2@5_e#U6z-m12N z-oeIHll%IF@7)L+4oSe@5)-Mip%53W))qobp+u&}DCDt>-`S65d(z+d$~bfW}JNf2U@clm=J8%g(AZU6#O zpZni;nVzLTHo|`+W_AHQuz~zP;WGO>R+Tv$4^lcs3~(yPB1A>+#r3_-_HyP%N+i8d z^nc#&x0u!X*Fpl$&kjV|S)JR?o_YY@IjIhI`ujy}fQQ9u9Xhb@CfOq4Z{?~cH5ep; zU2PEzLMIsh{|C|dvk|4wI=ahvmS`NZ?^97JEzjv;V-7N?cJZ(*VKn-I<%1qcg*O|# z+D`s&nic2bU$yr;YppYbi%_gphzL=h_Fm)p_s(vJs0?>(p{y%Htrr&=S`uqcUfNA$ zo%XRObe2W!k%fo1x?1n|bM3y8L+7IpCu!oV>#~(v_jL_cvud!s>q)m6!Jyy*yM!p8 zo}HmU#$ZAOSf-jULtE%`+|Sf8Ii{OUi_8oy+}!t0yLm*uF9=*k86gjh@{_OA&ld$j zu^(QXug|p>{lFdpz5~*%Fvq`}mRAaBhQ#pQ-sa#z-?Q;lPVT8{5EHf1t<)ch#fH4y z_f$BTs56|<4k);ks_ac(Yg99>udoEqW3kE^-t#Tqyeim0Z|_SLl`LV``_>J(Bwdr- z4l$37Em+_eR`HtUbFtH){!prE3Oy`S`ZxMpmJuj@2t{IM+|KbwbLUENM}dCrxRsDQ zrzf4GzX>0;8)gHzYlfpE+Z@N9B)Z0GX@r|9_AynhLcJ1993->6xtf;C-9}xou+bH_ z6h71G7M}weQ(t}rP62RTHMIe&zVwlD!-F@(OyEku%k&1@+dtV36@Z)kccgUm{Y@5$ z^V6LyF%Oew&#Dh!N7~dOp;{d~QSWy`;B`#60;@~Hu?#o_Z6}ITaH_mcmRHhCa8Ocs zg0eU9$MqGFZm!i30a_fqqsPNwyl}dI-t>)fgK@09ygZ+AqZ>N*-ugsssb)T@_1?2$ zBNQUzsiUu--<2y@2C~FDi6Otz=iX%9q@=pzqJQ4K57X_x>;kilr3Z5fPnA%Zo_cMf z*191D9~BDz(Gl#n6T(*W|j;f`10}b^&8Tw{~j&V zA8K!(H@n{QL8WOfhhUTn4qpGf!4eiuN z*$9&s@0NpUALSI@DHM{O2XlTn9|Pc^)aENRoPi}Rh)_xR-A~w~`<@xy` zKs0(*Og_m)&9;Z;hZ{(`pSH@Sw`MQxzdgwovyj0Ym(sSJ7YjiNtI5&J)!_O zX=fxYsFBCZ%gdRWAJ5tT#%E+Gue7?(cX&*DEp@TyaO+kuY_>Gu7kZ#{PnHj`%1b=~ zkh(_{4rzNZAwjaQZ*Z_e5>u~bJMRMTy<*Zq%}TX{V-sa%eqXea{;aMOhh&qJQF3r* zH-?FNJ*F*T9us5S^aMSSBPj{UaJQ=J;GF2|)h9mt4hF?yr=J!@vo?Cu9wQffSAOS{ zG55Z&taN@ENjOu0c$o9XM@=U2EQ0Gz`L4c;B&8TpGt4Ei-Zg9DRbhRxa2pK+^p<7J1L21dve8f zlU%@(fEaE+82mN`LrZ;vix@Q4&K<<4nh3gTWZ7-MIb@*`fJc>lp~Dfr4GLA`Rd^2o z?)7z#Z1erRZgdluo14oh>NZmYw;3rJY4+NQkB|4vB+Jjs1Ek~}tYAq?!)CN%3U~^h z41x5|V}s?2Kh{v$YbsP`=+ox%+h(Y-(T^VGl>z81k<(_yc9TV@=z=YMPwn9tZ*1x} zNE8!7@8Izghcj1H72Xx7Wbhi)Ebp&RidQ6BSX%Pvf624#N%l1$1+@g--@oVzf&3$> zou2$^5Fswn=KvonE-{GgNrn|#`bm37muOTNTWccmf_HI)gM(8|9!vjl!;3Xp!}n`y zo-pCAIRPPQ*_{a3?G6X^Dh7qLuy_CkGFhzncMa9rKx7`&zxhMs9M5QEta8nLT|v5( z5#=@b?WY|Y)1`FeuVHL`ikpdITxgJBe`jaE#px}B5_|*dG35L$Q^Ieevoln!MjcRb zA&0TAET9rHl|11oKX$8hUUjVY@V+kLYaZa1UNYF=a2-+7i@BWOoS-%6wz^;%B_qO$ zmOMX2s(zOiv>Vo|bD;HTs+yVkXTGuy*Z`dvatP$97LlFpNZsR0KK*HgRQjYYAJpBH zC@Ci|y$WPSg_s2T{GjdJ6+#U}o+xthhDTG&^0JMyv$MpWbbBatbS3jJO$HM9MgC4v zzP77k74`QKJo(fOOY>MmLiNlTYoRY;I8G`%CuehQt!GfzW_NiIP%Ck176cO68AabI z`8@Z{72@fgDO(6+L#E_8Pf~j8CsR3{f>pWY?#8qvXS}O*$rpY!k7<#qFKn6?D}&UF z)e1k@#OBDTX;v7a@|9B%_1DUcP+x$zaoVon>+2i40Jf!RX;%!N$@KtI8UCh(TU1Ru zq6>^;dm{=iNN4xGqv5Z(2RR~3_277|5{XeP(J61V9b((~QwAd4@{%X%%c-JJkLg{lWDwuIS+4%W=8P*rrx%?5eZp|1>G^Q6 z7Do3KaK6ktqxW`pPU`z?wo>`cRWpUZH9f2Wue~*?$b|5 zN;CXm2iIwABJ%R|^aM&$WIV4kbaSFM;)KC$bGoH@&F71GC&hFe%iE9;&P{?&v1UHF zEl6e{*fc;Sse&-^ySr{9#@zsF+Wjb`1E{wuHWd{VNH)<@t>*-v>DoL%+lz~fF@O;M zEEcGRlcxOPp%ry|NSto5I$Vs=z<@LyEjJVbj31Ojmw3S^A^X+HB~`BtzI~ZUAhoRqvip2en)fH{ zF~Da1_k_&ukL`g{Vz7({FoXz=)33JLhWY#=*j5OjTbi43j0OeG92pEa!+NI$N1vBD z62{ZHRe+%Ez`B4==wSp7DW&J~lxC$Le`$>A)01cTlY=#DMMcHEwb3Pp1c?Gra0mS4 z0Hptz|I2Ul3zptwJ-{?g{Sll#o`Po$fV$d4-x$omKurDmHZXZo4HM6gmU6mZ2V{x9 zzIE$X1JJ(@P(~rJpqrgSc2WX&`dMEckQ{o;xc~S%Ty*T_m@Bp(esBoXU`y6%oPX-C!)OlqAw`KK> zN1uQ=1K$7!p=#0aY1XaZ7xcX)HZlVLZ92ZD|>6*g9pXu1*<)G>GLhYEWmg z`n^5h>6J+?l^q|CN3+Ci*{tl6l4jyBlJH?}PG4pGW>aUX(?m^Ju<|WR%CC%z9Kjg8 ztf!Jb(^3uW9IOjx#_7kMEn5)8+QN?r;kE=0_RT;RZ-HO=pO#MNFw6}MqzVhh*f#+JrpRHW8`R;QcZLwu5p^88<4vKagovYYP^7PB^{L2 zTO-jNi|NNy zXi+5@Wwhbm+B_YWJy}!HMrZ|v0Z@Hw*IwF1BP&X8iv<}S-B}MH?BrnVRK_U~zYEov zvsvC278XWTgL6s3lWv4`6A1xx3>K?aB@m33>p^TzG%vi_k zotZuKv=)QKxw#{k6dca`fE41AO*;xXn7guFlX~&sYX0ludc2%(xd`<Lg<3@L6#_c)N^>4lswuropF{X$O)GL(EH6s9}_NMq&iBK?I)Frod#v;xFc(CrBUl9c zd`HxLnzZ-<28jW_loOknnl(ORKG}KON(8Mkt=%ChEV}2;#5|H#MtlSaCa4D8w3g?g zs6;8JBZ-0wSaek-!}GPBYBE{H<2S1Juc7cP&Y;)v71W=G3w8F=%IVt#_8h*zn=fpM zDj8I#4$4fP2P7L_k1XsfqW8!={?qVg4`y0zMNXVZ86$CQqoYIZF(yZg>q+5j^W2{E z(kk*h-dz#zx0NCgPBt^d-jLDomKoHBcaAgTP$(4WEi83Oa~sx0UZm+6riPG^qY(Nei1~bR*^?YvRE47Jt7m9GKR=Ny2hSJb{Fbr0WqMVJh3=Yv1ai7*CH{0QZaRxQ)aR}$|hz}Nwop6imn0nB&9OOUTT8oxUpSaIt9X3;r| zi_Mndcd+44M8OJY3J-PbUQQtf1$BqX%dU#>JjoEW?^tr+`W7E#P#2UGG=LIg}6vdR)Z&6%bb#qP8*k-x?nk<`8Sm8>SoQi zc3+*W3>%JD_y;B@!6ZF4GR<;d+W+zKT&o97E4*7%B(r4pV)7$2Xx*stfDXuxhNP4&YhWd&DW-zkk2cecb?fC!$Y3n1RL^ICne%ZQF~|ax}(Dg3rs#lkhwK z<>V+C+MgwsBkU?Yook%9$#Rv5$dwDs*aFg}N}0As^Z*)NzzuCfD0@X2-@(=YE7`Dofv>e;R4HE^ll131@M3wq{9j9igwJM9Td2+QHUA zxC0Iy=j(6}=nO_DU|2_e7!fHiVX2s!_G1%VS0yYabRjb7gM9y&neZEH^h``GCBxM2 zCU5mETsPVL&SKxZj;`xJu}vMI3DMq3J@<~rWJU)x-qOpAvdrSjn|xA~yv8%}5^YZ^ zK4w^OpkIp`14%2K@^-A&p2njgd@<zgZJ9qCUU!#fjz|5U9{icd^T1TCuWDmVyv zwe}K}l(jLU+(87Kpo% zO4A%D-w%NN|NSNkU-zlpu)eDl8c zsbVp!(&=P~kG@ZjfH*|m`OjP~E|0*c;OGSE8)K=1o1L+(zMl7}`AmAt!2tbc9Ox^T zFAK+!Zlmouo&}aBj(7A!`|I_IBq-ktK;2R89|7Ik zzPjS)H=45pC|`GIN_Mk!o7@JFxN12PWYpXg?Vt8nwk=fLFlPr=-gDzqh1&QpT|)|N8k)V`z-kl^6Ir~A@AO8Z_+^^ zHP6j28pi+h1H;2VBi?ySNA9`$aN_&#@-oKJ2V~*Us;4kaNY<~^IfV4nZLO~n-g_(q zp?N*@$5~g6l1=HM$v%7M)KBR;?(RP?ihD}l9^M#Ej4Dph(2AT5TeKSYbkc!=zVz3p zD_vSQE+Iwyl^)(auKgc!8d1n)E7v$tTK% zqp|-kQs>xhIF$TnwuIF~pIwnWH9l3w(kt(I%u`!6+ElfZ?;Y))Xqcq2muyEv5kLF$ zHDAWvC4O|#T*r`fI?4t5&Zgkmo_u1mFaPhcO0+lCKPKd)K6|=enkNs;%mAD+%@Q|WvcY@McHhg05 zh#mST)TS!3MhLy`9b@$E@AV-g0(Zv8e3u6oc3ohP;yqn)w+Q)Y5Z1Z7mb}zX)W&^( zpjy|;8A3yZrpQ9GpkeRph0u4HVSEPKG#Rf}Eh1INKHqMCA*($2=+!(*|INi!jSbEe zsv)|FYvBL + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/joomla/docker-compose.yml). diff --git a/examples/joomla/architecture.png b/examples/joomla/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6eb24fe185b29edf7382c416b1fa51c98754da GIT binary patch literal 14655 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

-Jy|;s+3A`;_g11WJW39|tdZbY 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 literal 0 HcmV?d00001 diff --git a/examples/kubernetes/README.md b/examples/kubernetes/README.md new file mode 100644 index 000000000..c084ffc1b --- /dev/null +++ b/examples/kubernetes/README.md @@ -0,0 +1,16 @@ +# Kubernetes + +Various examples on how to use bunkerized-nginx within a Kubernetes cluster. See the [Kubernetes section of the documentation](#TODO) for more information. + +## Architecture + + + +## Configuration + +We will assume that you have setup the [bunkerized-nginx ingress controller](#TODO) inside your cluster. + +## Kubernetes + +See [ingress.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/kubernetes/ingress.yml), [php.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/kubernetes/php.yml) and [reverse-proxy.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/kubernetes/reverse-proxy.yml). + diff --git a/examples/kubernetes/architecture.png b/examples/kubernetes/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..65f475a65876f7d981c4ab62e96c761e5525fd5f GIT binary patch literal 15728 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 z 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 dW~K$I7{x1=E|N*Z?yZ$EzVzW_+uF&O{= literal 0 HcmV?d00001 diff --git a/examples/kubernetes/ingress.yml b/examples/kubernetes/ingress.yml new file mode 100644 index 000000000..47bb356d5 --- /dev/null +++ b/examples/kubernetes/ingress.yml @@ -0,0 +1,66 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: bunkerized-nginx-ingress + # this label is mandatory + labels: + bunkerized-nginx: "yes" + annotations: + # add any global and default environment variables here as annotations with the "bunkerized-nginx." prefix + # examples : + #bunkerized-nginx.AUTO_LETS_ENCRYPT: "yes" + #bunkerized-nginx.USE_ANTIBOT: "javascript" + #bunkerized-nginx.REDIRECT_HTTP_TO_HTTPS: "yes" + #bunkerized-nginx.app.example.com_REVERSE_PROXY_WS: "yes" + #bunkerized-nginx.app.example.com_USE_MODSECURITY: "no" +# add "static" routes here (see https://kubernetes.io/docs/concepts/services-networking/ingress/) +# and/or add annotations to your services (see https://github.com/bunkerity/bunkerized-nginx/tree/master/examples/kubernetes) +spec: + tls: + - hosts: + - app1.example.com + rules: + - host: "app1.example.com" + http: + paths: + - pathType: Prefix + path: "/" + backend: + service: + name: app1 + port: + number: 80 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: app1 + labels: + app: app1 +spec: + replicas: 1 + selector: + matchLabels: + app: app1 + template: + metadata: + labels: + app: app1 + spec: + containers: + - name: app1 + image: containous/whoami +--- +apiVersion: v1 +kind: Service +metadata: + name: app1 +spec: + type: ClusterIP + selector: + app: app1 + ports: + - protocol: TCP + port: 80 + targetPort: 80 + diff --git a/examples/kubernetes/php.yml b/examples/kubernetes/php.yml index d7244b5f1..90f8d5880 100644 --- a/examples/kubernetes/php.yml +++ b/examples/kubernetes/php.yml @@ -1,21 +1,21 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: myapp + name: app2 labels: - app: myapp + app: app2 spec: replicas: 1 selector: matchLabels: - app: myapp + app: app2 template: metadata: labels: - app: myapp + app: app2 spec: containers: - - name: myapp + - name: app2 image: php:fpm volumeMounts: - name: www @@ -23,23 +23,26 @@ spec: volumes: - name: www hostPath: - path: /shared/www/myapp.example.com + path: /shared/www/app2.example.com type: Directory --- apiVersion: v1 kind: Service metadata: - name: myapp + name: app2 + # this label is mandatory + labels: + bunkerized-nginx: "yes" annotations: - bunkerized-nginx.AUTOCONF: "yes" - bunkerized-nginx.SERVER_NAME: "myapp.example.com" - bunkerized-nginx.REMOTE_PHP: "myapp" + bunkerized-nginx.SERVER_NAME: "app2.example.com" + bunkerized-nginx.REMOTE_PHP: "app2" bunkerized-nginx.REMOTE_PHP_PATH: "/var/www/html" + bunkerized-nginx.AUTO_LETS_ENCRYPT: "yes" spec: type: ClusterIP selector: - app: myapp + app: app2 ports: - protocol: TCP port: 9000 - targetPort: 9000 \ No newline at end of file + targetPort: 9000 diff --git a/examples/kubernetes/reverse-proxy.yml b/examples/kubernetes/reverse-proxy.yml index c04dde58b..5d3237c94 100644 --- a/examples/kubernetes/reverse-proxy.yml +++ b/examples/kubernetes/reverse-proxy.yml @@ -1,38 +1,41 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: myapp + name: app3 labels: - app: myapp + app: app3 spec: replicas: 1 selector: matchLabels: - app: myapp + app: app3 template: metadata: labels: - app: myapp + app: app3 spec: containers: - - name: myapp + - name: app3 image: containous/whoami --- apiVersion: v1 kind: Service metadata: - name: myapp + name: app3 + # this label is mandatory + labels: + bunkerized-nginx: "yes" annotations: - bunkerized-nginx.AUTOCONF: "yes" - bunkerized-nginx.SERVER_NAME: "myapp.example.com" + bunkerized-nginx.SERVER_NAME: "app3.example.com" bunkerized-nginx.USE_REVERSE_PROXY: "yes" bunkerized-nginx.REVERSE_PROXY_URL: "/" - bunkerized-nginx.REVERSE_PROXY_HOST: "http://myapp" + bunkerized-nginx.REVERSE_PROXY_HOST: "http://app3" + bunkerized-nginx.AUTO_LETS_ENCRYPT: "yes" spec: type: ClusterIP selector: - app: myapp + app: app3 ports: - protocol: TCP port: 80 - targetPort: 80 \ No newline at end of file + targetPort: 80 diff --git a/examples/load-balancer/README.md b/examples/load-balancer/README.md new file mode 100644 index 000000000..53fdb131b --- /dev/null +++ b/examples/load-balancer/README.md @@ -0,0 +1,15 @@ +# Load balancer + +Simple example on how to load balance requests to multiple backends. + +## Architecture + + + +## Configuration + +Edit the custom `upstream` directive in the **http-confs/upstream.conf** file according to your use case. + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/load-balancer/docker-compose.yml). diff --git a/examples/load-balancer/architecture.png b/examples/load-balancer/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..7dfea97268ed802ff5f501118bb7fd7d4d0e3cf5 GIT binary patch literal 15792 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 literal 0 HcmV?d00001 diff --git a/examples/moodle/README.md b/examples/moodle/README.md new file mode 100644 index 000000000..afe70a35e --- /dev/null +++ b/examples/moodle/README.md @@ -0,0 +1,11 @@ +# Moodle + +Moodle is a free and open-source learning management system (LMS) written in PHP and distributed under the GNU General Public License. See the official [website](https://moodle.org/) and [repository](https://git.in.moodle.com/moodle/moodle) for more information. + +## Architecture + + + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/moodle/docker-compose.yml). diff --git a/examples/moodle/moodle.png b/examples/moodle/moodle.png new file mode 100644 index 0000000000000000000000000000000000000000..313b6b670d261063cf092c0668bede5af8996008 GIT binary patch literal 17036 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 YmeAUnG65GnLE@3Dl+v3riFcp>AFyw%hX4Qo literal 0 HcmV?d00001