WEBVTT

1
00:00:00.040 --> 00:00:03.640
<v Speaker 1>Hey everyone, and welcome to another deep dive with us. Today.

2
00:00:03.680 --> 00:00:07.759
<v Speaker 1>We're going to be looking at ngix, oh yeah, which

3
00:00:07.799 --> 00:00:09.800
<v Speaker 1>is something I've heard so much about over the years.

4
00:00:09.800 --> 00:00:11.800
<v Speaker 2>It's everywhere these days, it is.

5
00:00:12.359 --> 00:00:14.919
<v Speaker 1>And we're going to be looking at the NGIX Cookbook

6
00:00:14.960 --> 00:00:17.559
<v Speaker 1>twenty nineteen to kind of guide us through this.

7
00:00:17.800 --> 00:00:20.800
<v Speaker 2>Yeah, there's so much in there. We're going to give you.

8
00:00:20.760 --> 00:00:22.399
<v Speaker 1>The Yeah, we'll boil it down.

9
00:00:22.280 --> 00:00:25.079
<v Speaker 2>The highlights and make it so you can walk away

10
00:00:25.120 --> 00:00:26.280
<v Speaker 2>and know what ngix is.

11
00:00:26.359 --> 00:00:27.760
<v Speaker 1>Yeah, and we'll give you like a cheese sheet of

12
00:00:27.879 --> 00:00:28.559
<v Speaker 1>this resource.

13
00:00:28.640 --> 00:00:29.120
<v Speaker 2>Yeah.

14
00:00:29.239 --> 00:00:32.920
<v Speaker 1>So, first of all, what is ngix and why is

15
00:00:32.960 --> 00:00:35.240
<v Speaker 1>it such a popular web app tool?

16
00:00:35.560 --> 00:00:39.320
<v Speaker 2>Well, at its heart in gix is a web server, ok.

17
00:00:40.159 --> 00:00:42.960
<v Speaker 2>But it's also so much more than that, right, I

18
00:00:42.960 --> 00:00:45.679
<v Speaker 2>Mean he can act as a reverse proxy, a load balancer,

19
00:00:46.240 --> 00:00:50.320
<v Speaker 2>a content cash oh wow. And it's really become popular

20
00:00:50.320 --> 00:00:53.039
<v Speaker 2>because it's just so efficient, Okay, Like it can handle

21
00:00:53.119 --> 00:00:56.479
<v Speaker 2>just a massive amount of connections without needing a ton

22
00:00:56.520 --> 00:00:57.200
<v Speaker 2>of resources.

23
00:00:57.200 --> 00:00:57.479
<v Speaker 1>Okay.

24
00:00:57.560 --> 00:01:01.119
<v Speaker 2>So it's known for speed, being lightened powerful, it's.

25
00:01:00.960 --> 00:01:03.439
<v Speaker 1>Like the engine of a race car. I was gonna say. Now,

26
00:01:03.479 --> 00:01:07.519
<v Speaker 1>in terms of installing it, the cookbook mentions like open

27
00:01:07.599 --> 00:01:11.200
<v Speaker 1>source NGI n X and then there's also NGI and

28
00:01:11.480 --> 00:01:14.120
<v Speaker 1>X plus. What are the differences there?

29
00:01:14.319 --> 00:01:18.640
<v Speaker 2>So the open source version is free, okay, anyone can

30
00:01:18.719 --> 00:01:21.760
<v Speaker 2>use it, and NDON x plus is a commercial version

31
00:01:22.159 --> 00:01:26.680
<v Speaker 2>with some more features that are really for enterprises. And

32
00:01:26.760 --> 00:01:30.439
<v Speaker 2>the cookbook will walk you through installing either one on

33
00:01:30.480 --> 00:01:32.079
<v Speaker 2>all kinds of different operating systems.

34
00:01:32.200 --> 00:01:34.079
<v Speaker 1>So it's not super difficult.

35
00:01:34.200 --> 00:01:35.159
<v Speaker 2>No, it's well documented.

36
00:01:35.280 --> 00:01:37.599
<v Speaker 1>Okay, great, so you've installed it. What's kind of the

37
00:01:37.640 --> 00:01:40.159
<v Speaker 1>first indication that this thing's working?

38
00:01:40.319 --> 00:01:42.519
<v Speaker 2>Yeah, So there's a simple command you can run that

39
00:01:42.640 --> 00:01:44.719
<v Speaker 2>lets you sort of peek under the hood and you'll

40
00:01:44.719 --> 00:01:48.120
<v Speaker 2>see the master process, which is like the control center

41
00:01:48.159 --> 00:01:51.599
<v Speaker 2>of ngon X and you'll see its worker processes and

42
00:01:51.640 --> 00:01:54.879
<v Speaker 2>that's what's actually handling the requests that are coming in. Okay,

43
00:01:54.920 --> 00:01:56.799
<v Speaker 2>so you see this little team working.

44
00:01:56.519 --> 00:01:58.879
<v Speaker 1>Together, right like this is proof of life.

45
00:01:59.079 --> 00:02:00.760
<v Speaker 2>Yeah, exactly, Okay, awesome.

46
00:02:00.799 --> 00:02:03.079
<v Speaker 1>So n GIX, what's the deal with load balancing?

47
00:02:03.359 --> 00:02:06.040
<v Speaker 2>So load balancing is critical if you've got a website

48
00:02:06.079 --> 00:02:09.439
<v Speaker 2>that's getting any kind of serious traffic. Okay, Basically you

49
00:02:09.439 --> 00:02:12.960
<v Speaker 2>have multiple servers, yeah, that could handle visitors to your website.

50
00:02:13.560 --> 00:02:17.159
<v Speaker 2>NGI and X acts like a traffic cop, and it

51
00:02:17.319 --> 00:02:21.639
<v Speaker 2>distributes those requests coming in across all of those different

52
00:02:21.680 --> 00:02:26.439
<v Speaker 2>servers to prevent any single server from getting overloaded and watches.

53
00:02:26.439 --> 00:02:28.479
<v Speaker 1>So it's almost it's like you've got a team of

54
00:02:28.520 --> 00:02:29.840
<v Speaker 1>servers working together to.

55
00:02:29.840 --> 00:02:31.840
<v Speaker 2>Kind of exactly, they're sharing the lights for the.

56
00:02:31.840 --> 00:02:35.479
<v Speaker 1>Burden, so nobody gets overloaded. Yeah, okay, and what kind

57
00:02:35.520 --> 00:02:36.680
<v Speaker 1>of load balancing can it do?

58
00:02:36.919 --> 00:02:39.400
<v Speaker 2>So it can actually do load balancing for a variety

59
00:02:39.400 --> 00:02:42.599
<v Speaker 2>of different types of traffic. Oh so eh, GTP, TCPUDP.

60
00:02:43.039 --> 00:02:44.360
<v Speaker 2>So it's really versatile.

61
00:02:44.439 --> 00:02:48.039
<v Speaker 1>Gotcha, like a traffic cop that can handle cars and trucks.

62
00:02:48.400 --> 00:02:49.159
<v Speaker 2>Yeah, exactly.

63
00:02:49.240 --> 00:02:51.560
<v Speaker 1>Can you give an example of how this would work

64
00:02:51.680 --> 00:02:52.400
<v Speaker 1>in practice?

65
00:02:52.680 --> 00:02:55.919
<v Speaker 2>Yeah? Sure. So imagine you have a database and that

66
00:02:56.039 --> 00:02:59.479
<v Speaker 2>database is constantly getting read requests. Maybe it's an e

67
00:02:59.520 --> 00:03:03.360
<v Speaker 2>commerce and it's serving up product information. NGI and X

68
00:03:03.840 --> 00:03:09.919
<v Speaker 2>can distribute those read requests across multiple database replicas. Oh wow,

69
00:03:10.039 --> 00:03:12.840
<v Speaker 2>so that no single replica gets overloaded.

70
00:03:12.840 --> 00:03:16.360
<v Speaker 1>Okay, so it's not just preventing crashes, but it's also

71
00:03:16.479 --> 00:03:19.159
<v Speaker 1>keeping things super smooth for.

72
00:03:19.159 --> 00:03:22.520
<v Speaker 2>Yeah, it's about performance, performance and responsiveness for your users.

73
00:03:22.599 --> 00:03:26.680
<v Speaker 1>And NGNX plus can actually brain connections.

74
00:03:26.919 --> 00:03:29.840
<v Speaker 2>Yeah, it has this feature called connection draining, which is

75
00:03:29.919 --> 00:03:32.039
<v Speaker 2>really useful if you have to take a server offline

76
00:03:32.520 --> 00:03:34.879
<v Speaker 2>for maintenance or something like that. What it does is

77
00:03:34.919 --> 00:03:39.879
<v Speaker 2>it gracefully redirects any active sessions to other servers before

78
00:03:39.919 --> 00:03:42.479
<v Speaker 2>taking that server offline. Okay, so you don't end up

79
00:03:42.479 --> 00:03:45.080
<v Speaker 2>with users getting disconnected gotcha in the middle of doing

80
00:03:45.080 --> 00:03:45.840
<v Speaker 2>something important.

81
00:03:45.879 --> 00:03:49.439
<v Speaker 1>That would be bad. Now, we talked about balancing the traffic,

82
00:03:49.919 --> 00:03:52.800
<v Speaker 1>but it can also actually manage the traffic, that's right, yeah, right,

83
00:03:52.840 --> 00:03:53.360
<v Speaker 1>and shape it.

84
00:03:53.560 --> 00:03:56.879
<v Speaker 2>Yeah, Traffic shaping is a way to control the flow

85
00:03:56.960 --> 00:03:59.520
<v Speaker 2>of data based on a lot of different factors. So

86
00:03:59.560 --> 00:04:03.039
<v Speaker 2>it could be the user's location, okay, the type of content,

87
00:04:03.280 --> 00:04:06.639
<v Speaker 2>the time of day, even you can prioritize certain traffic.

88
00:04:07.199 --> 00:04:09.039
<v Speaker 2>Maybe you want to make sure that video streaming always

89
00:04:09.039 --> 00:04:11.560
<v Speaker 2>gets enough bandwidth, or you want to limit bandwidth for

90
00:04:11.680 --> 00:04:12.840
<v Speaker 2>large file downloads.

91
00:04:12.960 --> 00:04:13.199
<v Speaker 1>Okay.

92
00:04:13.319 --> 00:04:15.520
<v Speaker 2>So it's a really powerful way to optimize performance.

93
00:04:15.599 --> 00:04:17.920
<v Speaker 1>It's like it's like a traffic system that can adapt

94
00:04:17.959 --> 00:04:21.480
<v Speaker 1>to the current conditions exactly. Okay, Now, what about the

95
00:04:21.480 --> 00:04:22.480
<v Speaker 1>GOIP module.

96
00:04:22.800 --> 00:04:25.319
<v Speaker 2>Oh, that's a cool one. What's that That lets NGI

97
00:04:25.480 --> 00:04:30.079
<v Speaker 2>NX know where your user is connecting from geographically, so

98
00:04:30.120 --> 00:04:33.079
<v Speaker 2>you could do things like personalized content. You could restrict

99
00:04:33.160 --> 00:04:37.279
<v Speaker 2>access to a website based on country, show targeted ads,

100
00:04:37.879 --> 00:04:38.639
<v Speaker 2>lots of options.

101
00:04:38.680 --> 00:04:43.160
<v Speaker 1>So we're moving from a traffic cop to like almost

102
00:04:43.279 --> 00:04:46.319
<v Speaker 1>like a concierge for your website.

103
00:04:46.360 --> 00:04:47.839
<v Speaker 2>It knows where everybody's coming from.

104
00:04:48.439 --> 00:04:53.680
<v Speaker 1>No. In terms of security, ngi X is also pretty powerful.

105
00:04:53.800 --> 00:04:56.000
<v Speaker 2>Yeah, so NGIX can what are some of the things

106
00:04:56.040 --> 00:04:59.319
<v Speaker 2>that can do. It can do basic authentication okay, so

107
00:04:59.519 --> 00:05:03.920
<v Speaker 2>require users to log in before they can access certain content.

108
00:05:04.160 --> 00:05:07.439
<v Speaker 2>It can validate JWTs, which are tokens that are often

109
00:05:07.519 --> 00:05:11.720
<v Speaker 2>used for secure communication. And it can control access based

110
00:05:11.759 --> 00:05:15.079
<v Speaker 2>on IP address, like if you want to allow or

111
00:05:15.120 --> 00:05:18.560
<v Speaker 2>deny requests coming from a certain range. Okay, so you

112
00:05:18.600 --> 00:05:19.800
<v Speaker 2>have a lot of options there.

113
00:05:19.839 --> 00:05:21.720
<v Speaker 1>And what about the secure link modules.

114
00:05:21.759 --> 00:05:24.480
<v Speaker 2>The secure modules are really neat. It lets you generate

115
00:05:24.639 --> 00:05:30.560
<v Speaker 2>temporary expiring links to specific files or resources. So imagine

116
00:05:30.560 --> 00:05:33.120
<v Speaker 2>you have to share some confidential documents with a client.

117
00:05:33.600 --> 00:05:36.079
<v Speaker 2>You could create a link that expires after a certain

118
00:05:36.120 --> 00:05:36.639
<v Speaker 2>amount of time.

119
00:05:36.759 --> 00:05:37.800
<v Speaker 1>Oh wow, that's cool.

120
00:05:37.959 --> 00:05:38.439
<v Speaker 2>Yeah.

121
00:05:38.480 --> 00:05:40.800
<v Speaker 1>And it also enforces those secure connections.

122
00:05:40.920 --> 00:05:46.079
<v Speaker 2>Yeah. So NGNX can be configured to force browsers to

123
00:05:46.240 --> 00:05:50.000
<v Speaker 2>use HTTPS, which is the secure version of the protocol.

124
00:05:50.120 --> 00:05:55.560
<v Speaker 1>So it's not just about protecting data that's at rest,

125
00:05:55.800 --> 00:05:58.600
<v Speaker 1>it's also about data that's like traveling across the internet. Yeah,

126
00:05:58.680 --> 00:06:03.360
<v Speaker 1>transit content cashing. How does NGNX do that?

127
00:06:03.639 --> 00:06:06.959
<v Speaker 2>So CASHI is about making things faster by storing copies

128
00:06:07.000 --> 00:06:11.040
<v Speaker 2>of content that's access frequently closer to the user. And

129
00:06:11.199 --> 00:06:14.040
<v Speaker 2>GIX can do this in a variety of ways. You

130
00:06:14.079 --> 00:06:17.439
<v Speaker 2>can create these custom caching zones, and you can actually

131
00:06:17.720 --> 00:06:21.600
<v Speaker 2>define rules for what gets cashed and how long gets

132
00:06:21.680 --> 00:06:26.759
<v Speaker 2>cashed for based on things like cookies or request parameters.

133
00:06:26.959 --> 00:06:30.240
<v Speaker 1>Right, So it's not just blanket cashing everything.

134
00:06:29.920 --> 00:06:32.759
<v Speaker 2>Right, Yeah, it's more intelligent than that, exactly. Okay, and

135
00:06:32.800 --> 00:06:33.839
<v Speaker 2>what about this purging.

136
00:06:34.199 --> 00:06:38.759
<v Speaker 1>So purging lets you remove specific content from the cash instantly.

137
00:06:39.240 --> 00:06:41.639
<v Speaker 1>So if you've updated a web page and you want

138
00:06:41.639 --> 00:06:43.800
<v Speaker 1>to make sure that users are seeing the latest version,

139
00:06:44.160 --> 00:06:46.720
<v Speaker 1>you can purge that old version from the cash.

140
00:06:46.519 --> 00:06:50.680
<v Speaker 2>Yeah shah, so that they always get the freshest content exactly. Okay,

141
00:06:50.720 --> 00:06:55.240
<v Speaker 2>So we've got this cashing magic happening. But I imagine

142
00:06:55.240 --> 00:06:57.600
<v Speaker 2>we can like fine tune it even more.

143
00:06:57.800 --> 00:06:59.439
<v Speaker 1>Yeah, there are a lot of ways to tweak the

144
00:06:59.480 --> 00:07:01.319
<v Speaker 1>settings for optimal performance.

145
00:07:01.959 --> 00:07:03.040
<v Speaker 2>Okay, give me an example.

146
00:07:03.160 --> 00:07:05.519
<v Speaker 1>One thing you can do is keep connections open.

147
00:07:05.279 --> 00:07:08.720
<v Speaker 2>Between NGI and X and the clients and servers that

148
00:07:08.800 --> 00:07:12.680
<v Speaker 2>it's talking to, So that reduces the overhead of constantly

149
00:07:12.759 --> 00:07:15.399
<v Speaker 2>establishing and tearing down connections.

150
00:07:14.959 --> 00:07:17.079
<v Speaker 1>Keeping a conversation going yeah exactly.

151
00:07:17.240 --> 00:07:21.319
<v Speaker 2>You can buffer responses in memory to avoid having to

152
00:07:21.360 --> 00:07:24.199
<v Speaker 2>write data to disc all the time. You can tweak

153
00:07:24.279 --> 00:07:26.720
<v Speaker 2>settings in the operating system itself.

154
00:07:26.839 --> 00:07:29.240
<v Speaker 1>Gotcha. So it's like a more holistic.

155
00:07:29.199 --> 00:07:30.879
<v Speaker 2>Yeah, it's about optimizing the whole environment.

156
00:07:30.920 --> 00:07:34.279
<v Speaker 1>Whole environment. Okay. Now, what are some other cool features

157
00:07:34.319 --> 00:07:35.519
<v Speaker 1>that ngnx has.

158
00:07:36.120 --> 00:07:40.879
<v Speaker 2>Well, For one thing, it supports HTTP two, which is

159
00:07:40.920 --> 00:07:44.040
<v Speaker 2>the new or faster version of HTTP. And it has

160
00:07:44.040 --> 00:07:45.680
<v Speaker 2>support for something called gRPC.

161
00:07:46.079 --> 00:07:47.560
<v Speaker 1>Okay, gRPC, that's new to me.

162
00:07:47.639 --> 00:07:50.480
<v Speaker 2>Yeah, it's a modern way to build APIs okay. And

163
00:07:50.480 --> 00:07:52.560
<v Speaker 2>then there's a really cool feature called server push.

164
00:07:52.800 --> 00:07:54.439
<v Speaker 1>Okay, what's server push?

165
00:07:54.519 --> 00:07:57.439
<v Speaker 2>So server push is about anticipating what the user is

166
00:07:57.480 --> 00:07:59.600
<v Speaker 2>going to need before they even ask for it.

167
00:07:59.800 --> 00:07:59.879
<v Speaker 1>Wo.

168
00:08:00.360 --> 00:08:03.360
<v Speaker 2>So it's literally like reading the user's mind okay, and

169
00:08:03.399 --> 00:08:06.279
<v Speaker 2>then sending that content to the browser in advance, so

170
00:08:06.360 --> 00:08:07.839
<v Speaker 2>everything loads super fast.

171
00:08:08.120 --> 00:08:11.879
<v Speaker 1>Okay. So it seems like NGNX is like this multi

172
00:08:11.920 --> 00:08:14.600
<v Speaker 1>tool it is of web development. It does all sorts

173
00:08:14.600 --> 00:08:15.800
<v Speaker 1>of really incredible things.

174
00:08:15.839 --> 00:08:17.439
<v Speaker 2>I mean, we've just scratched the surface here.

175
00:08:17.519 --> 00:08:21.639
<v Speaker 1>Yeah, we talked about how it can balance loads, manage traffic,

176
00:08:21.720 --> 00:08:26.360
<v Speaker 1>it can act as like a security gatekeeper, it can

177
00:08:26.399 --> 00:08:31.120
<v Speaker 1>cash content, and it can really just make websites perform

178
00:08:31.360 --> 00:08:32.039
<v Speaker 1>at their best.

179
00:08:32.120 --> 00:08:32.320
<v Speaker 2>Yeah.

180
00:08:32.360 --> 00:08:35.320
<v Speaker 1>So this is really just a taste of what NGI

181
00:08:35.360 --> 00:08:37.720
<v Speaker 1>and X can do. Is a big world, Yeah, it is,

182
00:08:37.759 --> 00:08:40.559
<v Speaker 1>and we're gonna keep exploring it in our next episode.

183
00:08:40.600 --> 00:08:41.840
<v Speaker 2>I can't wait where we talk.

184
00:08:41.720 --> 00:08:44.720
<v Speaker 1>About automation and all the cool things you can do

185
00:08:44.840 --> 00:08:47.720
<v Speaker 1>to make NGIX work even smarter.

186
00:08:47.919 --> 00:08:50.879
<v Speaker 2>Yeah, we'll dive into the programmability of it, how to

187
00:08:50.879 --> 00:08:51.879
<v Speaker 2>automate things, So be.

188
00:08:51.840 --> 00:08:53.919
<v Speaker 1>Sure to join us for that and until then, keep

189
00:08:53.919 --> 00:08:54.399
<v Speaker 1>on learning.

190
00:08:54.519 --> 00:08:56.440
<v Speaker 2>Welcome back to our NGI andX deep dive.

191
00:08:56.519 --> 00:08:57.279
<v Speaker 1>Glad to be back.

192
00:08:57.440 --> 00:08:59.200
<v Speaker 2>So last time we talked about kind of the core

193
00:08:59.279 --> 00:09:03.240
<v Speaker 2>functions of GX as a web server and load balancer

194
00:09:03.279 --> 00:09:06.240
<v Speaker 2>and security features. This time, I think it'd be cool

195
00:09:06.279 --> 00:09:07.200
<v Speaker 2>to talk about automation.

196
00:09:07.519 --> 00:09:08.720
<v Speaker 1>Yeah. I love automation.

197
00:09:08.879 --> 00:09:09.600
<v Speaker 2>Yeah, who doesn't.

198
00:09:09.679 --> 00:09:12.679
<v Speaker 1>Who wants to do things manually? What can we actually

199
00:09:12.759 --> 00:09:14.639
<v Speaker 1>automate with ngix?

200
00:09:14.759 --> 00:09:18.320
<v Speaker 2>So a good place to start is the ngix plus APIA,

201
00:09:18.519 --> 00:09:23.639
<v Speaker 2>which gives you programmatic control over just about everything in NGIX.

202
00:09:23.720 --> 00:09:25.879
<v Speaker 1>So, like I could write a script that like adds

203
00:09:25.879 --> 00:09:28.240
<v Speaker 1>a server exactly, you can remove the server.

204
00:09:28.360 --> 00:09:31.120
<v Speaker 2>You could add servers to a group, remove servers from

205
00:09:31.120 --> 00:09:33.480
<v Speaker 2>a group, change configurations on the fly.

206
00:09:33.960 --> 00:09:35.279
<v Speaker 1>Wow. That's powerful.

207
00:09:35.399 --> 00:09:36.360
<v Speaker 2>Yeah, super powerful.

208
00:09:36.440 --> 00:09:38.600
<v Speaker 1>Now the cookbook also mentions that you can integrate it

209
00:09:38.639 --> 00:09:42.399
<v Speaker 1>with other tools like Puppet and chef and antsable.

210
00:09:42.600 --> 00:09:46.159
<v Speaker 2>Yeah, all those configuration management tools. Right, you can use

211
00:09:46.200 --> 00:09:49.399
<v Speaker 2>them to manage your whole NGI and X setup. Okay,

212
00:09:49.480 --> 00:09:51.759
<v Speaker 2>so you're not manually going in and changing.

213
00:09:51.440 --> 00:09:55.240
<v Speaker 1>Files, gotcha. So it's like infrastructure as code exactly. What

214
00:09:55.240 --> 00:09:56.679
<v Speaker 1>about container environments?

215
00:09:56.679 --> 00:09:59.720
<v Speaker 2>So ngix works really well with containers. Okay, there's a

216
00:10:00.000 --> 00:10:02.559
<v Speaker 2>official Docker image for NGNX.

217
00:10:02.679 --> 00:10:02.960
<v Speaker 1>Okay.

218
00:10:03.000 --> 00:10:05.960
<v Speaker 2>And there's this thing called the ngix ingress controller.

219
00:10:06.080 --> 00:10:09.519
<v Speaker 1>Okay. I've heard about ingress controllers, but I don't really

220
00:10:09.519 --> 00:10:09.840
<v Speaker 1>get it.

221
00:10:09.919 --> 00:10:13.720
<v Speaker 2>Okay, So an ingress controller is basically the front door

222
00:10:14.080 --> 00:10:18.080
<v Speaker 2>to your application in a Kubernetes cluster. It manages all

223
00:10:18.080 --> 00:10:20.759
<v Speaker 2>the traffic coming in and then routes it to the

224
00:10:20.799 --> 00:10:21.679
<v Speaker 2>appropriate service.

225
00:10:21.879 --> 00:10:22.039
<v Speaker 1>Right.

226
00:10:22.360 --> 00:10:26.519
<v Speaker 2>So the ngix ingress controller is using NGI nx's power

227
00:10:27.159 --> 00:10:30.120
<v Speaker 2>to efficiently route that traffic and balance the load.

228
00:10:30.240 --> 00:10:34.440
<v Speaker 1>Gotcha. And the cookbook also mentions dns SRV records.

229
00:10:34.559 --> 00:10:39.000
<v Speaker 2>Yeah, those are cool. So DNSSRV records are basically a

230
00:10:39.080 --> 00:10:43.799
<v Speaker 2>way to define a service by name, okay, instead of

231
00:10:43.799 --> 00:10:44.639
<v Speaker 2>by IP address.

232
00:10:44.759 --> 00:10:45.320
<v Speaker 1>Gotcha.

233
00:10:45.399 --> 00:10:48.200
<v Speaker 2>And this makes it super easy for NGIX to find

234
00:10:48.279 --> 00:10:50.600
<v Speaker 2>and route traffic to the right services.

235
00:10:50.679 --> 00:10:52.759
<v Speaker 1>So it's like a phone book for your services exactly.

236
00:10:52.759 --> 00:10:54.399
<v Speaker 2>It's like a dynamic phone book, and it.

237
00:10:54.360 --> 00:10:56.759
<v Speaker 1>Just makes things so much more flexible. Now in terms

238
00:10:56.759 --> 00:10:59.600
<v Speaker 1>of debugging, what are some of the things that NGNX

239
00:10:59.639 --> 00:11:00.240
<v Speaker 1>can help with.

240
00:11:00.480 --> 00:11:03.159
<v Speaker 2>So logging is your best friend, okay when you're trying

241
00:11:03.200 --> 00:11:05.240
<v Speaker 2>to figure out what's going on with NNGI and X right.

242
00:11:05.320 --> 00:11:09.279
<v Speaker 2>AGNX has really good logging capabilities, okay. And you can

243
00:11:09.320 --> 00:11:12.799
<v Speaker 2>customize those logs in a lot of different ways, gotcha.

244
00:11:12.879 --> 00:11:15.240
<v Speaker 2>You can feel to the information, and you can stream

245
00:11:15.279 --> 00:11:17.960
<v Speaker 2>those logs to a central server, so it's not just

246
00:11:17.960 --> 00:11:20.559
<v Speaker 2>like looking at a giant text file. It can be

247
00:11:20.600 --> 00:11:21.720
<v Speaker 2>a little more sophisticated.

248
00:11:21.840 --> 00:11:24.399
<v Speaker 1>Yeah. And if you're using NNGI and X plus R,

249
00:11:24.559 --> 00:11:29.639
<v Speaker 1>you actually get this really cool monitoring dashboard that shows

250
00:11:29.679 --> 00:11:31.919
<v Speaker 1>you everything that's happening in real time.

251
00:11:32.759 --> 00:11:36.039
<v Speaker 2>Now, we talked a little bit before about performance tuning. Yeah,

252
00:11:36.080 --> 00:11:38.919
<v Speaker 2>what are some of the key techniques to keep in mind?

253
00:11:39.279 --> 00:11:41.039
<v Speaker 1>So a lot of the stuff we talked about before

254
00:11:41.080 --> 00:11:41.720
<v Speaker 1>applies here.

255
00:11:41.879 --> 00:11:42.159
<v Speaker 2>Okay.

256
00:11:42.279 --> 00:11:46.000
<v Speaker 1>Keeping connections open between NGI and X and the clients

257
00:11:46.000 --> 00:11:49.200
<v Speaker 1>and servers is talking to is a big one, Okay.

258
00:11:49.279 --> 00:11:53.840
<v Speaker 1>That can really reduce overhead buffering responses and memory. It's

259
00:11:53.879 --> 00:11:56.480
<v Speaker 1>another good one that helps you avoid having to write

260
00:11:56.600 --> 00:12:00.240
<v Speaker 1>data to disk. Okay, and then tuning the op reading

261
00:12:00.320 --> 00:12:02.360
<v Speaker 1>system itself can also make a big difference.

262
00:12:02.360 --> 00:12:04.799
<v Speaker 2>So it's like optimizing the environment.

263
00:12:05.039 --> 00:12:07.440
<v Speaker 1>Yeah, exactly that ngix.

264
00:12:06.960 --> 00:12:10.279
<v Speaker 2>Is running in the cookbook also mentions the importance of

265
00:12:10.360 --> 00:12:12.440
<v Speaker 2>well organized configuration files.

266
00:12:12.600 --> 00:12:14.639
<v Speaker 1>Oh yeah, this is a big deal. Why is that

267
00:12:14.759 --> 00:12:18.320
<v Speaker 1>because it's really easy for those files to get out

268
00:12:18.320 --> 00:12:19.120
<v Speaker 1>of hand.

269
00:12:19.200 --> 00:12:21.480
<v Speaker 2>Especially if you're working on a big project with a

270
00:12:21.519 --> 00:12:23.879
<v Speaker 2>complex setup, So you want to make sure that they're

271
00:12:23.879 --> 00:12:26.919
<v Speaker 2>well organized, they're easy to read and understand, and if.

272
00:12:26.759 --> 00:12:29.919
<v Speaker 1>You run into problems, it's easier to exactly, it's a

273
00:12:29.960 --> 00:12:34.519
<v Speaker 1>lot easier to find and fix errors. Right now, speaking

274
00:12:34.559 --> 00:12:37.440
<v Speaker 1>of troubleshooting, what are some tips for debugging?

275
00:12:38.039 --> 00:12:40.480
<v Speaker 2>So one thing you could do is use the ngix

276
00:12:40.600 --> 00:12:45.080
<v Speaker 2>D command which will check the syntax of your configuration file.

277
00:12:45.519 --> 00:12:47.720
<v Speaker 2>That can catch a lot of the simple errors early on.

278
00:12:47.799 --> 00:12:49.799
<v Speaker 1>Right before you actually try to restart it.

279
00:12:49.759 --> 00:12:54.480
<v Speaker 2>Exactly, Okay. You can enable debug logging for specific parts

280
00:12:54.480 --> 00:12:57.960
<v Speaker 2>of your configuration, and if you get really stuck, you

281
00:12:57.960 --> 00:12:59.960
<v Speaker 2>can actually get back traces from cordum.

282
00:13:01.200 --> 00:13:05.440
<v Speaker 1>Wow. So it's like a whole forensic investigation it is. Now,

283
00:13:05.519 --> 00:13:08.840
<v Speaker 1>let's talk about cloud deployments because it seems like merx

284
00:13:08.919 --> 00:13:10.879
<v Speaker 1>is super popular, pretty popular in the cloud.

285
00:13:11.039 --> 00:13:14.519
<v Speaker 2>Yeah, and you know cloud platforms like Aws and Azure,

286
00:13:15.279 --> 00:13:18.159
<v Speaker 2>they have their own load balancing solutions, but a lot

287
00:13:18.200 --> 00:13:21.360
<v Speaker 2>of people still prefer to use nngix okay, because it's

288
00:13:21.440 --> 00:13:24.159
<v Speaker 2>so powerful and flexible.

289
00:13:23.639 --> 00:13:25.279
<v Speaker 1>So they're almost bringing their own tools.

290
00:13:25.679 --> 00:13:26.120
<v Speaker 2>Exactly.

291
00:13:26.320 --> 00:13:29.320
<v Speaker 1>What are some of the scenarios where n gix really shines.

292
00:13:29.559 --> 00:13:33.159
<v Speaker 2>So on Aws, you can use NGI NX behind a

293
00:13:33.200 --> 00:13:37.559
<v Speaker 2>network load balancer, ok to create really highly available and

294
00:13:37.600 --> 00:13:40.879
<v Speaker 2>scalable deployments. You can use it to route traffic to

295
00:13:41.000 --> 00:13:46.200
<v Speaker 2>different availability zones, which are like geographically separate data centers, gotcha,

296
00:13:46.919 --> 00:13:50.840
<v Speaker 2>And that gives you resilience against outages. So even if

297
00:13:50.840 --> 00:13:51.639
<v Speaker 2>one data center.

298
00:13:51.440 --> 00:13:53.720
<v Speaker 1>Goes down, which one goes down? The other one can

299
00:13:53.759 --> 00:13:54.759
<v Speaker 1>still handle the traffic.

300
00:13:54.879 --> 00:13:55.279
<v Speaker 2>Yeah.

301
00:13:55.320 --> 00:13:56.200
<v Speaker 1>What about Azure?

302
00:13:56.639 --> 00:14:00.320
<v Speaker 2>So in Azure you can use Nginx with virtual machine

303
00:14:00.360 --> 00:14:04.240
<v Speaker 2>scale sets and then lets you automatically scale your application

304
00:14:04.440 --> 00:14:05.840
<v Speaker 2>up or down based on demand.

305
00:14:06.080 --> 00:14:06.480
<v Speaker 1>Wow.

306
00:14:06.639 --> 00:14:10.320
<v Speaker 2>So NGIX can really act as the glue between all

307
00:14:10.320 --> 00:14:12.679
<v Speaker 2>these different parts of your infrastructure. And it can talk

308
00:14:12.720 --> 00:14:15.360
<v Speaker 2>to AWS, it can talk to Azure, It can even

309
00:14:15.399 --> 00:14:16.799
<v Speaker 2>talk to on premises systems.

310
00:14:16.879 --> 00:14:20.039
<v Speaker 1>Wow. So it really ties everything together. Yeah okay, now

311
00:14:20.080 --> 00:14:22.399
<v Speaker 1>I'm curious what's next for Nginx.

312
00:14:22.639 --> 00:14:25.080
<v Speaker 2>Well, one area where NNGNX is already making a big

313
00:14:25.080 --> 00:14:27.799
<v Speaker 2>impact is in micro services architectures.

314
00:14:27.879 --> 00:14:30.759
<v Speaker 1>Oh yeah, that's a hot topic it is. How does

315
00:14:31.039 --> 00:14:32.960
<v Speaker 1>nginx help with microservices?

316
00:14:33.000 --> 00:14:35.440
<v Speaker 2>So in a microservices world, you've got all these little

317
00:14:35.480 --> 00:14:39.799
<v Speaker 2>services talking to each other, and managing the communication between

318
00:14:39.799 --> 00:14:43.120
<v Speaker 2>those services can get tricky. GNX can act as like

319
00:14:43.120 --> 00:14:46.480
<v Speaker 2>a central point of control. It can route requests, balance loads,

320
00:14:47.240 --> 00:14:48.919
<v Speaker 2>and just make sure everything is running smoothly.

321
00:14:49.399 --> 00:14:52.159
<v Speaker 1>So it's like almost like a conductor for your micro

322
00:14:52.200 --> 00:14:53.000
<v Speaker 1>services orchestra.

323
00:14:53.120 --> 00:14:53.559
<v Speaker 2>I like that.

324
00:14:53.679 --> 00:14:57.399
<v Speaker 1>But with all these moving pieces in a microservices world,

325
00:14:57.919 --> 00:14:59.919
<v Speaker 1>how does NGIX stay on top of it?

326
00:15:00.159 --> 00:15:03.519
<v Speaker 2>So that's where automation and programmability really come in Okay,

327
00:15:03.720 --> 00:15:09.720
<v Speaker 2>you can use the ngix plus API to dynamically reconfigure

328
00:15:10.639 --> 00:15:13.559
<v Speaker 2>Nginx as your architecture changes.

329
00:15:13.360 --> 00:15:17.440
<v Speaker 1>So it can adapt exactly to new services coming online

330
00:15:17.480 --> 00:15:18.080
<v Speaker 1>and things like that.

331
00:15:18.200 --> 00:15:21.399
<v Speaker 2>Yep. And there are tools like console template that can

332
00:15:21.440 --> 00:15:22.679
<v Speaker 2>automate those changes for you.

333
00:15:22.799 --> 00:15:24.679
<v Speaker 1>Wow, that's cool. So it's almost like self healing.

334
00:15:24.840 --> 00:15:28.440
<v Speaker 2>Yeah, you can build really robust and resilient systems with gix.

335
00:15:28.799 --> 00:15:32.360
<v Speaker 1>So we've talked about a lot today, from automation to

336
00:15:32.679 --> 00:15:37.840
<v Speaker 1>configuration management, to the cloud and micro services. What are

337
00:15:37.879 --> 00:15:40.240
<v Speaker 1>some key takeaways that our listeners should keep in mind?

338
00:15:40.799 --> 00:15:43.720
<v Speaker 2>So I think the big takeaway here is that ngix

339
00:15:44.480 --> 00:15:48.200
<v Speaker 2>is an incredibly powerful and versatile tool Okay, and it

340
00:15:48.240 --> 00:15:52.639
<v Speaker 2>can be used to build really high performing, secure, reliable

341
00:15:52.679 --> 00:15:56.279
<v Speaker 2>applications no matter what kind of application you're building, whether

342
00:15:56.279 --> 00:15:59.480
<v Speaker 2>it's a simple website or a complex distributed system.

343
00:15:59.519 --> 00:16:01.639
<v Speaker 1>So it's not just for big companies, no, not at all.

344
00:16:01.679 --> 00:16:02.600
<v Speaker 1>It can be for anybody.

345
00:16:02.600 --> 00:16:04.559
<v Speaker 2>Anyone can benefit from using ngix.

346
00:16:04.840 --> 00:16:05.279
<v Speaker 1>Awesome.

347
00:16:05.679 --> 00:16:08.840
<v Speaker 2>The cookbook is a great place to start, but remember

348
00:16:08.879 --> 00:16:13.480
<v Speaker 2>that the ngix ecosystem is always evolving, so just stay curious,

349
00:16:14.279 --> 00:16:16.240
<v Speaker 2>keep learning, keep experimenting.

350
00:16:16.320 --> 00:16:18.240
<v Speaker 1>Great advice. Be sure to join us for our next

351
00:16:18.240 --> 00:16:21.120
<v Speaker 1>episode where we talk about Nginx and media streaming.

352
00:16:21.240 --> 00:16:22.759
<v Speaker 2>Yeah, that's going to be a fun one and.

353
00:16:22.679 --> 00:16:29.919
<v Speaker 1>Some advanced security features. Until then, keep on learning, and

354
00:16:30.000 --> 00:16:34.279
<v Speaker 1>we are back for the final part of our NGIX

355
00:16:34.639 --> 00:16:35.320
<v Speaker 1>deep dive.

356
00:16:35.519 --> 00:16:36.679
<v Speaker 2>I can't believe we're already here.

357
00:16:36.799 --> 00:16:38.960
<v Speaker 1>I know it's flown by. We've talked about so many

358
00:16:39.000 --> 00:16:41.240
<v Speaker 1>things we have, but we saved some of the I

359
00:16:41.279 --> 00:16:43.120
<v Speaker 1>think most exciting stuff for.

360
00:16:43.159 --> 00:16:44.840
<v Speaker 2>Last Yeah, they're really fun.

361
00:16:45.120 --> 00:16:48.799
<v Speaker 1>Media streaming and some advanced security stuff. So let's start

362
00:16:48.840 --> 00:16:52.879
<v Speaker 1>with streaming. How does NGNX handle media streaming?

363
00:16:53.279 --> 00:16:57.279
<v Speaker 2>So ngix has become super popular for delivering all kinds

364
00:16:57.320 --> 00:17:00.480
<v Speaker 2>of media, video, audio, live streams, you name it.

365
00:17:00.519 --> 00:17:01.799
<v Speaker 1>And what makes it so good at that?

366
00:17:02.440 --> 00:17:05.480
<v Speaker 2>Well, for one thing, it supports all the major protocols

367
00:17:05.920 --> 00:17:10.319
<v Speaker 2>like HLS and mpig dash. Those are essential for adaptive streaming, right.

368
00:17:10.200 --> 00:17:13.160
<v Speaker 1>And adaptive streaming means that it can adjust the quality

369
00:17:13.720 --> 00:17:15.880
<v Speaker 1>based on the user's connection, so you don't get that

370
00:17:15.960 --> 00:17:19.920
<v Speaker 1>like buffering and stuttering. It just works now I understand

371
00:17:20.200 --> 00:17:22.880
<v Speaker 1>ngion x plus can actually and genxlus has some do

372
00:17:22.920 --> 00:17:24.319
<v Speaker 1>some even cooler stuff.

373
00:17:24.000 --> 00:17:28.200
<v Speaker 2>Extra features with me, yeah, like dynamic packaging and casing. Okay,

374
00:17:28.279 --> 00:17:31.440
<v Speaker 2>So imagine you have a big video file. Ngixplus can

375
00:17:31.440 --> 00:17:34.279
<v Speaker 2>actually split it up into smaller segments on the fly,

376
00:17:34.839 --> 00:17:38.759
<v Speaker 2>and then those segments can be streamed and cashed more efficiently.

377
00:17:39.000 --> 00:17:41.279
<v Speaker 1>So it's like taking a big file and breaking it

378
00:17:41.319 --> 00:17:45.200
<v Speaker 1>down exactly into smaller chunks so they're easier to work with.

379
00:17:45.319 --> 00:17:47.799
<v Speaker 2>It's like slicing a pizza, Okay, you don't try to

380
00:17:47.839 --> 00:17:48.799
<v Speaker 2>eat the whole thing at once.

381
00:17:49.240 --> 00:17:51.960
<v Speaker 1>And you can also set like bandwidth limits.

382
00:17:52.039 --> 00:17:55.799
<v Speaker 2>Yeah, you can control the download speed for different clients

383
00:17:56.119 --> 00:17:56.759
<v Speaker 2>or groups of.

384
00:17:56.720 --> 00:17:58.799
<v Speaker 1>Clients so that you don't get that like.

385
00:18:00.400 --> 00:18:01.880
<v Speaker 2>Inges exactly.

386
00:18:02.039 --> 00:18:05.799
<v Speaker 1>Okay, now let's move on to security. Okay, we talked

387
00:18:05.799 --> 00:18:08.480
<v Speaker 1>about some of the basic security features in the past,

388
00:18:08.519 --> 00:18:10.480
<v Speaker 1>but what about like some more advanced stuff.

389
00:18:11.519 --> 00:18:15.440
<v Speaker 2>Yeah. So NGNX has a lot of tools for protecting

390
00:18:15.440 --> 00:18:16.279
<v Speaker 2>your applications.

391
00:18:16.359 --> 00:18:16.720
<v Speaker 1>Okay.

392
00:18:17.240 --> 00:18:21.480
<v Speaker 2>One area where it's really good is mitigating DDoS attacks.

393
00:18:21.759 --> 00:18:23.559
<v Speaker 1>Okay, and d DOS attacks those are the ones where

394
00:18:23.599 --> 00:18:26.920
<v Speaker 1>I want someone tries to flood your server trying to

395
00:18:26.960 --> 00:18:29.720
<v Speaker 1>bring it down, and NGNX can actually help with that.

396
00:18:30.000 --> 00:18:33.039
<v Speaker 2>NGI and X plus especially has some powerful features for that.

397
00:18:33.240 --> 00:18:33.559
<v Speaker 1>Okay.

398
00:18:33.640 --> 00:18:36.960
<v Speaker 2>It can identify and block malicious traffic in real time.

399
00:18:37.839 --> 00:18:43.160
<v Speaker 2>Using things like rate limiting, IP blacklisting, and even behavioral analysis.

400
00:18:43.240 --> 00:18:45.440
<v Speaker 1>So it's like it's got a whole team of security

401
00:18:45.480 --> 00:18:47.480
<v Speaker 1>guards working for it.

402
00:18:47.559 --> 00:18:48.799
<v Speaker 2>Yeah, it's constantly watching.

403
00:18:49.279 --> 00:18:52.759
<v Speaker 1>Now, you mentioned JWT validation before, can you explain how

404
00:18:52.759 --> 00:18:53.240
<v Speaker 1>that works?

405
00:18:53.359 --> 00:18:56.559
<v Speaker 2>Yeah, So JWTs are these tokens that are used for

406
00:18:56.599 --> 00:18:58.920
<v Speaker 2>secure communication between different applications.

407
00:18:59.000 --> 00:18:59.279
<v Speaker 1>Okay.

408
00:19:00.279 --> 00:19:03.359
<v Speaker 2>X plus can validate these tokens okay, to make sure

409
00:19:03.400 --> 00:19:05.359
<v Speaker 2>that only authorized requests are allowed through.

410
00:19:05.480 --> 00:19:07.200
<v Speaker 1>So it's like checking your IDs exactly.

411
00:19:07.200 --> 00:19:08.839
<v Speaker 2>It's like a bouncer at a club, right.

412
00:19:08.720 --> 00:19:14.200
<v Speaker 1>And of course we need those secure connections absolutely, So hgtts, YEP.

413
00:19:14.240 --> 00:19:17.559
<v Speaker 2>Ng I and x can enforce HTTPS and it supports

414
00:19:17.720 --> 00:19:21.680
<v Speaker 2>really advanced s SLTLS configurations.

415
00:19:20.960 --> 00:19:24.759
<v Speaker 1>So it's not just like a basic it's HTTPS implementing,

416
00:19:24.839 --> 00:19:27.720
<v Speaker 1>it's the full package. Okay, So how do we actually monitor.

417
00:19:27.359 --> 00:19:31.480
<v Speaker 2>All this logging? Logging? Logging, blogging, that's your best friend,

418
00:19:31.720 --> 00:19:35.200
<v Speaker 2>okay when it comes to security monitoring, Okay, NGI in

419
00:19:35.359 --> 00:19:38.599
<v Speaker 2>X logs can tell you a lot about what's going on.

420
00:19:38.960 --> 00:19:41.599
<v Speaker 1>So they're not just like useless.

421
00:19:41.160 --> 00:19:43.200
<v Speaker 2>Information, No, they're super valuable.

422
00:19:43.319 --> 00:19:43.599
<v Speaker 1>Okay.

423
00:19:43.720 --> 00:19:46.559
<v Speaker 2>And if you're using NGI and x plus, you get

424
00:19:46.640 --> 00:19:50.200
<v Speaker 2>that real time monitoring dashboard that can show you things

425
00:19:50.319 --> 00:19:55.039
<v Speaker 2>like blocked requests or failed authentication attempts.

426
00:19:55.200 --> 00:19:59.680
<v Speaker 1>So it's like it's like a security camera that's constantly watching. Now,

427
00:19:59.720 --> 00:20:02.400
<v Speaker 1>even with all these security features, what happens if something

428
00:20:02.440 --> 00:20:02.920
<v Speaker 1>goes wrong?

429
00:20:03.079 --> 00:20:08.000
<v Speaker 2>So ngn is actually built for high availability and fault tolerance.

430
00:20:08.400 --> 00:20:11.960
<v Speaker 2>You can configure it in active active or active passive

431
00:20:12.920 --> 00:20:16.559
<v Speaker 2>modes to make sure that your applications stay online even

432
00:20:16.559 --> 00:20:17.839
<v Speaker 2>if one server goes down.

433
00:20:17.960 --> 00:20:21.119
<v Speaker 1>So it's like a backup generator kicks in if the

434
00:20:21.160 --> 00:20:23.359
<v Speaker 1>power goes out, exactly, and I bet we can automate

435
00:20:23.359 --> 00:20:23.920
<v Speaker 1>that process.

436
00:20:24.079 --> 00:20:27.160
<v Speaker 2>Oh yeah, absolutely. You can use tools like keep alived

437
00:20:27.400 --> 00:20:30.759
<v Speaker 2>ok to automatically switch traffic over to a healthy server.

438
00:20:31.039 --> 00:20:35.319
<v Speaker 2>And nginx plus has this zone sync feature that keeps

439
00:20:35.720 --> 00:20:39.119
<v Speaker 2>important data synchronized across multiple servers, so.

440
00:20:39.079 --> 00:20:40.799
<v Speaker 1>It's like a self healing system.

441
00:20:40.920 --> 00:20:41.920
<v Speaker 2>Yeah, it really is.

442
00:20:42.039 --> 00:20:44.480
<v Speaker 1>Wow. NGNX is amazing.

443
00:20:44.559 --> 00:20:46.200
<v Speaker 2>It is a pretty incredible piece of software.

444
00:20:46.240 --> 00:20:48.720
<v Speaker 1>It is it is. So as we wrap up this

445
00:20:49.119 --> 00:20:51.759
<v Speaker 1>deep dive, what are some final thoughts for our listeners?

446
00:20:52.000 --> 00:20:55.000
<v Speaker 2>I think the biggest takeaway is that ngix is an

447
00:20:55.000 --> 00:20:58.039
<v Speaker 2>incredibly powerful tool, Okay, and it can be used to

448
00:20:58.039 --> 00:21:03.519
<v Speaker 2>build really high performing, secure, reliable web applications. No matter

449
00:21:03.559 --> 00:21:06.039
<v Speaker 2>what you're building, whether it's a simple website or a

450
00:21:06.119 --> 00:21:07.759
<v Speaker 2>complex distributed system.

451
00:21:07.559 --> 00:21:08.720
<v Speaker 1>The cookbook is a great resource.

452
00:21:08.799 --> 00:21:11.720
<v Speaker 2>Yeah, it's great place to start, but the ngix ecosystem

453
00:21:11.759 --> 00:21:15.839
<v Speaker 2>is always evolving, right, So keep learning, keep experimenting, and

454
00:21:15.880 --> 00:21:16.799
<v Speaker 2>never stop exploring.

455
00:21:17.240 --> 00:21:20.079
<v Speaker 1>That is fantastic advice. Thank you so much for joining

456
00:21:20.160 --> 00:21:22.680
<v Speaker 1>us on this deep dive into the world of NGI

457
00:21:22.759 --> 00:21:25.240
<v Speaker 1>and X. It's been a pleasure, it has and until

458
00:21:25.279 --> 00:21:26.400
<v Speaker 1>next time, keep on learning.
