NGINX cho 1,000,000++ TPS do một người phỏng vấn tại NAVER chia sẻ
Khóa học này không chỉ tập trung vào cách cấu hình NGINX, mà còn hướng đến việc giải quyết những khó khăn trong phỏng vấn và công việc thực tế do không hiểu vì sao cần có cấu trúc và thiết lập như vậy. Dựa trên kinh nghiệm trực tiếp làm người phỏng vấn tại Naver, Kakao và Toss, đồng thời đánh giá rất nhiều ứng viên, khóa học sẽ hướng dẫn qua thực hành cách giải thích và vận dụng NGINX từ góc độ hiệu năng, khả năng mở rộng và vận hành. Cốt lõi của khóa học là giúp bạn xây dựng tư duy có thể theo dõi luồng lưu lượng và truy tìm vấn đề, thay vì chỉ ghi nhớ các giá trị cấu hình.
Thực tế thì NGINX là một mảng rất khó để dành thời gian nghiên cứu và cũng ít khi đụng tay vào, nhưng nhờ bạn truyền đạt những nội dung cốt lõi trong thời gian ngắn như thế này nên đã giúp ích cho mình rất nhiều. Xin cảm ơn bạn.
5.0
lsls ks
94% đã tham gia
Tôi nghĩ sẽ rất tốt nếu bạn lấy nội dung bài giảng làm nền tảng và tự học thêm cá nhân. Bài giảng này mang lại cảm giác như đang định hướng và giúp nắm bắt các khái niệm cơ bản!
5.0
에이미
88% đã tham gia
Nội dung này đã giúp tôi nắm vững những kiến thức cơ bản. Xin cảm ơn.
Bạn sẽ nhận được điều này sau khi học.
Hiểu có hệ thống, đến mức có thể giải thích cả lý do “tại sao lại cấu hình NGINX như vậy”
Khả năng trả lời và giải quyết một cách logic các câu hỏi về NGINX, mạng và luồng lưu lượng trong buổi phỏng vấn
Cảm quan thực tiễn trong việc thiết kế và giải thích cấu trúc dịch vụ dưới góc nhìn Reverse Proxy
Khả năng tự hoàn thiện mẫu cấu hình NGINX có cân nhắc đến hiệu suất và khả năng mở rộng
Khả năng phân tích vấn đề, có thể truy tìm và giải thích nguyên nhân theo từng cấp độ trong tình huống sự cố
Phát triển · Lập trình · Backend
Biết cấu hình nhưng khi được hỏi tại sao lại làm như vậy
Các tệp cấu hình NGINX có đầy trên Internet. Sao chép vào thì thường là chạy được. Vấn đề nằm ở bước tiếp theo. Dù trong buổi phỏng vấn hay khi xảy ra sự cố, nếu được hỏi "tại sao lại là giá trị này" thì bạn sẽ lúng túng. Khóa học này giúp bạn hiểu cấu trúc thay vì học thuộc các thiết lập.
Từ cú pháp cơ bản đến vận hànhContext Block · Process Model · Reverse
Proxy
mẫu sao chép và sử dụngdưới dạng có thể áp dụng ngay các thiết lập về hiệu năng và nén
2 lập trình viên đang làm việc10 năm tại trụ sở Naver · phát triển máy chủ nền tảng tại Pangyo
NGINX là máy chủ phía trước tiếp nhận yêu cầu và chuyển tiếp đến máy chủ phía sau. Đây vừa là máy chủ web, vừa là reverse proxy, đồng thời cũng được dùng làm bộ cân bằng tải. Bắt đầu từ NGINX khác Apache ở điểm nào.
Vị trí xuất phát của khóa học này
Chạy thì vẫn chạy được nhưng không thể giải thích.
Trạng thái thường gặp
Sao chép cấu hình
worker_processes, keepalive_timeout, gzip. Bạn dán nguyên xi các giá trị đã thấy ở đâu đó. Nó chạy được.
Tại sao lại là giá trị đó
Điểm bị mắc kẹt
Không thể đưa ra căn cứ.
Khi lưu lượng truy cập tăng, bạn không thể trả lời được cần tăng thông số nào và cấu hình này được kế thừa ở đâu.
Các tệp cấu hình được kế thừa theo mối quan hệ cha–con. Nếu không nắm rõ quy tắc đó, bạn sẽ phải quyết định một cách cảm tính xem nên viết vào block nào. Khóa học này bắt đầu bằng việc nắm vững cấu trúc đó.
Nơi khóa học này bắt đầu
Đây là cuộc trò chuyện thực sự đã diễn ra.
Tại một nơi quy tụ các lập trình viên đang làm việc tại những công ty khác nhau, câu chuyện về NGINX đã được nhắc đến. Cuộc trò chuyện đó chính là điểm khởi đầu của khóa học này.
Đây là câu chuyện diễn ra trong một nhóm trò chuyện mở, nơi các nhà chia sẻ kiến thức trên Inflearn tụ họp.
KNgười phỏng vấn Kakao (lập trình viên)Mọi người sử dụng NGINX đến mức nào vậy? Bên tôi cũng đang dùng, nhưng muốn cải thiện thêm. Tôi hỏi xem mọi người có mẹo hay thực sự hữu ích nào chỉ dân trong nghề mới biết không.
HHongTôi có một đội ngũ hạ tầng riêng nên không trực tiếp xử lý NGINX. Tôi cũng muốn thử một lần, nhưng…
NNgười phỏng vấn tại Naver (lập trình viên)Có cao thủ NGINX ở đây này. Đội của chúng tôi cũng dùng, nhưng theo tôi biết thì trang chủ Naver trực tiếp sử dụng NGINX hoặc máy chủ web dựa trên SSI.
TLập trình viên TossRất khó tìm được nơi không sử dụng NGINX. Dù không nhất thiết là NGINX thì họ vẫn luôn sử dụng một hình thức tương tự.
NNgười phỏng vấn Naver (lập trình viên)Cá nhân tôi cho rằng, xét từ góc độ reverse proxy, đây là một hình thức xử lý mang tính tổng hợp trong việc vận hành dịch vụ, đồng thời cũng có những lợi thế lớn ở các khía cạnh như xác thực và phân quyền.
NNgười phỏng vấn Naver (lập trình viên)Tôi vừa nảy ra một ý hay. Tôi sẽ cùng Hong làm thành một khóa học nhé.
Học được gì?
Định hình cấu trúc và cố định thành mẫu шаб.
Sự khác biệt so với ApacheTrước tiên, hãy tìm hiểu lý do NGINX ra đời. Khi cấu trúc khác nhau, cách cấu hình cũng khác nhau.
Khối ngữ cảnhCách cấu hình được kế thừa từ cấp cha xuống cấp con và bị ghi đè ở đâu
Mô-đun hóaChia tệp bằng include và trừu tượng hóa thành dạng có thể mở rộng.
Mô hình tiến trìnhCách thiết lập worker xét trên khía cạnh thông lượng
Hiệu năng · mẫu nénTạo mẫu cơ bản có thể sao chép và sử dụng nguyên trạng.
Mẫu Edge CaseXử lý vòng các tình huống không thể thực hiện bằng cú pháp tiêu chuẩn theo cách của NGINX
Reverse ProxyỞ phía trước, tiếp nhận và chuyển tiếp lưu lượng về phía sau như thế nào. Đây là phần chiếm tỷ trọng lớn nhất.. This is the most substantial section.
Trong buổi phỏng vấn
Cùng một câu hỏi, nhưng đến câu hỏi thứ hai thì sẽ phân biệt được.
Câu hỏi đầu tiên thường được cho qua. Người phỏng vấn sẽ đào sâu thêm một lần nữa, và từ đó có thể phân biệt người thực sự hiểu với người chỉ học thuộc.
BEFORE
H. NGINX đóng vai trò gì?
A. Theo tôi biết, NGINX đảm nhiệm vai trò reverse proxy, cho phép xây dựng kiến trúc theo dạng không giao tiếp trực tiếp với máy chủ.
Q. Vậy nếu chỉ xét dưới góc độ reverse proxy thì sự khác biệt về Connection phát sinh như thế nào?
A. Ừm… tôi không rõ lắm.
AFTER
Hỏi: Vậy nếu chỉ xét từ góc độ reverse proxy thì sự khác biệt về Connection phát sinh như thế nào?
A. Cấu trúc không phải là máy khách và máy chủ được kết nối thành một, mà kết nối được tách thành hai.
Client giao tiếp với NGINX, và NGINX tiếp nhận yêu cầu đó rồi giao tiếp lại với máy chủ phía sau.
Nhờ cấu trúc phân tầng này, NGINX không chỉ có vai trò chuyển tiếp yêu cầu mà còn có thể xử lý tập trung ở phía trước việc cân bằng tải, quản lý Keep-Alive và xác thực·phân quyền.
Với những câu học thuộc lòng, bạn sẽ không thể vượt qua câu hỏi thứ hai. Khi hiểu được cấu trúc, bạn có thể tự tạo câu trả lời và nói ngay tại chỗ.
Chương trình học
Chúng ta sẽ đề cập đến những gì và theo thứ tự nào?
Phần đầu tập trung vào ngữ pháp và cấu trúc, phần sau chuyển sang các mẫu câu thực tế và Reverse Proxy.
02
So sánh hệ thống legacy và NGINX & thiết lập môi trường thực hành
Khái niệm cốt lõi của NGINX, giải quyết những hạn chế của Apache
Cài đặt NGINX và cấu hình môi trường (các lệnh phục vụ triển khai không gián đoạn)
03
Bạn chỉ cần sao chép nguyên văn và sử dụng — Cách sử dụng cơ bản NGINX
Context Block của NGINX dựa trên mối quan hệ cha–con
Cú pháp chuẩn của NGINX: kỹ thuật kế thừa đặc biệt và phương thức ghi đè
Mẫu mô-đun hóa NGINX đưa vào khái niệm trừu tượng, có cân nhắc đến Include và khả năng mở rộng
Thiết lập Process Model xét từ góc độ thông lượng của NGINX
Cách tối ưu hiệu suất và định dạng Template NGINX cơ bản để cấu hình
Mẫu cài đặt nén để tối ưu hóa dưới góc độ truyền tải mạng
04
Mẫu thủ thuật riêng của NGINX để triển khai các Edge Case
Kỹ thuật khớp đường dẫn khi phân phối tệp tĩnh: root và alias
Thiết lập Virtual Host (Server Block) để lưu trữ nhiều domain
Chỉ thị Redirection và Rewrite
05
Cách sử dụng NGINX dưới góc độ Reverse Proxy
Reverse Proxy động dựa trên HTTP1.0/HTTP1.1
Dynamic Reverse Proxy dựa trên WebSocket và kiểm thử chức năng máy chủ
Cân bằng tải bằng NGINX và 5 thuật toán
Tất tần tật về tối ưu hóa hiệu suất trong NGINX [ Feat. Performance Optimization ]
Áp dụng chứng chỉ CA SSL/TLS HTTPS và triển khai giao thức HTTP/2
Dành cho những người như thế này
Khóa học này dành cho ai?
Đã ghi nhớ cấu hình NGINX nhưng lần nào cũng lúng túng trước câu hỏi "tại sao lại làm như vậy"
Ứng viên đang tìm việc bối rối, đầu óc trống rỗng mỗi khi phỏng vấn chỉ toàn hỏi về CS và mạng máy tính
Junior không thể giải thích Reverse Proxy và luồng lưu lượng từ góc nhìn thực tế.
Những người đang sao chép cài đặt máy chủ phía trước của người khác để sử dụng
Tin tuyển dụng
Các tin tuyển dụng thực tế yêu cầu những gì?
Dù công ty có tổ chức hạ tầng riêng hay không, NGINX vẫn nằm trong danh sách công nghệ được yêu cầu trong tin tuyển dụng backend. Đây là hạng mục được trích nguyên văn từ tin tuyển dụng thực tế.
NHN
Phát triển dịch vụ
Điều kiện ưu tiên
Có kinh nghiệm phát triển và vận hành các hệ thống phân tán quy mô lớn.
Ứng viên có kinh nghiệm xây dựng kiến trúc hạ tầng dựa trên bộ cân bằng tải L4/L7 (HAProxy, Nginx, v.v.) và DNS→
5 thuật toán cân bằng tải
Có kinh nghiệm sử dụng AWS, OpenStack
Có kinh nghiệm cấu hình hạ tầng dịch vụ có tính sẵn sàng cao, chẳng hạn như vận hành GSLB, VIP và chứng chỉ TLS→ SSL/TLS ·
HTTP/2
Có kinh nghiệm giao tiếp với nhiều tổ chức khác nhau
Chúng ta sẽ trực tiếp cấu hình bộ cân bằng tải và chứng chỉ TLS ở phần cuối cùng. Bạn sẽ gặp các thuật ngữ được nêu trong tin tuyển dụng dưới dạng cấu hình thực tế trong khóa học.
넷마블
Lập trình viên phát triển hệ thống HR nội bộ công ty
Điều kiện ưu tiên
Hiểu biết về hệ thống HR
Kinh nghiệm phát triển hệ thống nội bộ công ty
Khoa liên quan đến máy tính
Kinh nghiệm sử dụng Java, Spring, DBMS, Angular, React, Vue, JQuery, mybatis, nginx, tomcat→ Có trong stack công nghệ yêu cầu
Dù đây là tin tuyển dụng phát triển hệ thống nội bộ chứ không phải vị trí hạ tầng, nginx được liệt kê cùng với tomcat. Máy chủ phía trước được xem là mặc định.
아이지에스
Lập trình viên phát triển dịch vụ
Công việc phụ trách
Phát triển JavaScript và Vue.js
Thiết kế và phát triển máy chủ API dựa trên Spring Boot
Thiết kế MySQL và schema
Cấu hình Nginx/Apache2→ Được đề cập từ phần 2
Đây không phải là ưu tiên mà nằm trong nhiệm vụ phụ trách. Khóa học này bắt đầu từ sự khác biệt về cấu trúc giữa Apache và NGINX.
Thị trường tuyển dụng
Không thể chứng minh rõ ràng chỉ bằng hồ sơ.
Đây là kết quả khảo sát về những điểm doanh nghiệp gặp khó khăn nhất khi tuyển dụng lập trình viên. Cả hai hạng mục đứng đầu đều nói rằng “khó tin vào những gì được ghi trên hồ sơ”.
Khó nắm bắt trình độ kỹ năng công nghệ trong CV24.3%
Khó đánh giá chính xác kinh nghiệm thực tế qua hồ sơ21.7%
Khó đánh giá kỹ năng mềm trong phỏng vấn13.2%
Khó xác minh tính xác thực của kinh nghiệm dự án12.1%
Khó đánh giá mức độ phù hợp của ứng viên với văn hóa doanh nghiệp7.7%
Thiếu hiệu quả trong việc đánh giá năng lực thực tế6.8%
Tốn nhiều thời gian và chi phí cho việc đánh giá6.2%
Khó đánh giá chiều sâu kỹ thuật trong buổi phỏng vấn5.7%
Khó duy trì tính khách quan và độ tin cậy của kết quả đánh giá2%
Khác0.3%
Nguồn: Khảo sát ý kiến và tình hình sử dụng dịch vụ “Đánh giá năng lực dành cho lập trình viên và người không chuyên về lập trình” của Grep. Vì vậy, phỏng vấn không hỏi “đã dùng gì” mà hỏi “tại sao lại làm như vậy”. Khóa học này đề cập đến tầng tư duy đó.
Thị trường hiện tại
Câu chuyện AI sẽ thay thế các nhà phát triển
Tuyển dụng nhân sự mới giảm, các doanh nghiệp chỉ muốn tuyển những người đã được kiểm chứng. Đây là những bài báo được đăng trong vài tháng gần đây.
Krafton, công ty đạt kết quả kinh doanh cao nhất từ trước đến nay, đã bắt đầu cắt giảm nhân sự. Lý do là công ty sẽ chuyển đổi thành doanh nghiệp “AI tiên phong”.
Các công ty chuyên về phần mềm đang ngừng tuyển dụng lập trình viên mới ra trường. Cũng có dự báo cho rằng việc tuyển dụng lập trình viên cấp thấp sẽ giảm mạnh 77%.
53% nhà thiết kế game trả lời rằng "AI sẽ thay thế công việc của tôi". Các trường hợp bị khuyến nghị thôi việc cũng đã được ghi nhận.
Doanh nghiệp càng bất an thì những người được tuyển càng phải thể hiện sự khác biệt rõ ràng hơn. Suy cho cùng, việc học là do bản thân tự thực hiện, nhưng tùy vào việc nhìn nhận điều gì dưới góc độ nào mà chiều sâu có thể giải thích sẽ khác nhau dù dành cùng một khoảng thời gian. Khóa học này được tạo ra để truyền đạt góc nhìn đó.
Đánh giá khóa học
Câu chuyện của những người đã nghe trước tien
Tôi đã chép nguyên văn từ đánh giá khóa học trên Inflearn.
"Thực ra, NGINX là một chủ đề khá khó để dành thời gian học và cũng không dễ bắt tay vào, nhưng nhờ anh/chị truyền đạt những điểm cốt lõi chỉ trong khoảng thời gian ngắn như thế này nên tôi đã nhận được rất nhiều sự trợ giúp.
Xin cảm ơn anh/chị."-cmpr
lsls ks · Được viết sau khi hoàn thành 94% khóa học
"Bản thân nội dung có rất nhiều khái niệm vô cùng khó, nhưng thầy/cô đã giải thích thật dễ hiểu nên tôi cảm thấy mình đã học được rất nhiều góc nhìn. Dù có những lúc chưa hiểu, nhưng nhờ có nhiều tài liệu mã thực hành và tài liệu trực quan đến vậy nên tôi đã học rất hiệu quả so với chi phí bỏ ra."】【。
Jang Jaehoon · Được viết sau khi hoàn thành 88% khóa học
"Trong khoảng thời gian ngắn như vậy mà đã thực hành được bao nhiêu bài… Có nhiều tài liệu thực hành nên tôi đã xem rất bổ ích."
Lập trình viên sinh năm 2002 · Được viết sau khi hoàn thành 88% khóa học
"Tôi nghĩ sẽ rất tốt nếu dựa trên nội dung bài giảng và tự học thêm. Đây là một bài giảng mang lại cảm giác giúp định hướng và nắm bắt các khái niệm."
Amy · Được viết sau khi 94% học viên hoàn thành khóa học
Giảng viên
Được xây dựng cùng nhau bởi hai nhà phát triển đang làm việc trong ngành
Được xây dựng cùng Ande, lập trình viên backend 10 năm kinh nghiệm tại trụ sở chính của NAVER, và Hong, lập trình viên phát triển máy chủ nền tảng tại Pangyo.
NAVER · KỸ SƯ BACKEND · 10 năm kinh nghiệm
Ande
Tôi là kỹ sư backend với 10 năm kinh nghiệm, hiện đang phát triển máy chủ tại trụ sở chính của NAVER. Cấu trúc và tiêu chí ra quyết định được đề cập trong khóa học phần lớn là những điều tôi đã thực sự trải nghiệm và đúc kết trong quá trình làm việc. Hãy thoải mái để lại câu hỏi nhé.
"Khi lưu lượng truy cập tăng, muốn biết cần nâng cấp điều gì thì phải hiểu cấu trúc chứ không phải giá trị."
Hiện là nhà phát triển máy chủ tại Naver (trụ sở chính) · Cựu nhà phát triển backend tại Tập đoàn Shinsegae · Cựu nhà phát triển máy chủ tại một startup chăm sóc sức khỏe ·
Chuyên ngành Khoa học máy tính
Lưu lượng truy cập lớnKiến trúc backendHạ tầngỨng phó sự cố
Người chia sẻ kiến thức · Phát triển máy chủ nền tảng tại Pangyo
Hong
Tôi đang phụ trách phát triển máy chủ nền tảng tại Pangyo. Tôi tiếp tục hoạt động với tư cách là người chia sẻ kiến thức để chia sẻ những phương pháp tự học cũng như các vấn đề và giải pháp gặp phải trong thực tế. Các bài giảng được xây dựng cùng nhiều nhà phát triển đang làm việc trong ngành, chứ không phải một mình.
"Nếu có thể trả lời vì sao một dòng trong tệp cấu hình lại nằm ở đó, bạn sẽ đọc hiểu được cả những máy chủ lần đầu tiên nhìn thấy."
Phát triển máy chủ nền tảngVận hành hạ tầngNhiều khóa học backend
Câu hỏi thường gặp
Câu hỏi thường gặp về khóa học NGINX
Q.Dù chưa từng sử dụng NGINX, tôi có thể học được không?
⌄
Vâng. Phần 2 bắt đầu từ việc cài đặt và thiết lập môi trường thực hành. Trước tiên, khóa học sẽ chỉ ra Apache khác gì, nên ngay cả khi khái niệm máy chủ phía trước còn xa lạ, bạn vẫn có thể theo kịp.
Mức độ được thiết kế cho người mới bắt đầu.
Q.Tôi có thể sử dụng nguyên xi tệp cấu hình không?
⌄
Đó chính là mục đích của Phần 3. Chúng tôi đã chuẩn bị sẵn các mẫu cơ bản để tối ưu hiệu năng và các mẫu thiết lập nén, đồng thời giải thích lý do tại sao mỗi dòng lại có giá trị như vậy. Mục tiêu của phần này là để bạn có thể sao chép và sử dụng, nhưng vẫn hiểu được cơ sở đằng sau chúng.
Q. Điều này có giúp ích cho việc chuẩn bị phỏng vấn không?
⌄
Thay vì học thuộc các giá trị cấu hình, nội dung được xây dựng theo hướng hiểu rõ cấu trúc. Chẳng hạn như quy tắc kế thừa của Context Block, Process Model ảnh hưởng đến thông lượng như thế nào, hay Reverse Proxy xử lý lưu lượng ra sao. Để trả lời câu hỏi "Tại sao lại làm như vậy?", cần nắm được tầng kiến thức này.
Q.Reverse Proxy được đề cập chuyên sâu đến mức nào?
⌄
Toàn bộ phần cuối là Reverse Proxy, và đây là phần chiếm tỷ trọng lớn nhất trong khóa học. Bắt đầu với Dynamic Reverse Proxy dựa trên HTTP/1.0·HTTP/1.1, nội dung sẽ đi qua proxy WebSocket và kiểm thử các chức năng của máy chủ, 5 thuật toán cân bằng tải, tối ưu hóa hiệu năng, rồi đến việc áp dụng chứng chỉ HTTPS SSL/TLS và triển khai HTTP/2.
Q.Phần Edge Case đề cập đến những gì?
⌄
Có những tình huống không thể xử lý gọn gàng chỉ bằng cú pháp tiêu chuẩn. Phần này đề cập đến sự khác nhau trong cách khớp đường dẫn giữa root và alias khi phân phối tệp tĩnh, cách chia Server Block để tiếp nhận nhiều tên miền trên một máy chủ, cũng như nên sử dụng các chỉ thị Redirection và Rewrite ở đâu.
Hãy cùng nhau trò chuyện nhé
Cộng đồng chat mở dành cho các nhà phát triển
Nếu tự mình gặp bế tắc, bạn sẽ mất rất nhiều thời gian. Có một không gian riêng để thoải mái chia sẻ những phần chưa hiểu khi xem bài giảng, những câu hỏi phát sinh khi áp dụng vào dịch vụ của mình, cũng như các câu chuyện về sự nghiệp và công việc thực tế.
OPEN CHAT · Cộng đồng dành cho nhà phát triển
Chúng ta chia sẻ những gì?
Chia sẻ những vấn đề thực tế gặp phải trong công việc, cách những người khác lựa chọn cấu trúc, cũng như những câu chuyện về sự nghiệp của các nhà phát triển. Chúng tôi cũng hoan nghênh các câu hỏi liên quan đến khóa học.
"Những chỗ bạn gặp bế tắc thường cũng là những chỗ người khác từng bế tắc. Hỏi người đã đi qua trước là cách nhanh nhất."
Câu hỏi về khóa họcVí dụ áp dụng vào thực tếCâu chuyện nghề nghiệp
Tôi bắt đầu học lập trình sau một thời gian dài lười biếng ở nhà và cảm thấy hứng thú với nó, hiện tại tôi đang đảm nhận việc phát triển máy chủ nền tảng (platform server) tại Pangyo. Tôi tiếp tục hoạt động với tư cách là người chia sẻ kiến thức vì muốn cung cấp cho các bạn phương pháp tôi đã học cũng như những vấn đề và giải pháp khác nhau mà các bạn có thể gặp phải trong thực tế.
Bài giảng không chỉ được tạo ra từ kiến thức của riêng tôi. Mọi bài giảng đều có sự đồng hành của những người cộng sự.
Tôi nghĩ sẽ rất tốt nếu bạn lấy nội dung bài giảng làm nền tảng và tự học thêm cá nhân. Bài giảng này mang lại cảm giác như đang định hướng và giúp nắm bắt các khái niệm cơ bản!
Chào bạn lsls ks, cảm ơn bạn đã để lại đánh giá tốt nhé!! Mình sẽ cố gắng cung cấp thêm nhiều nội dung hữu ích hơn nữa trong tương lai. Xin cảm ơn bạn!!
Thực tế thì NGINX là một mảng rất khó để dành thời gian nghiên cứu và cũng ít khi đụng tay vào, nhưng nhờ bạn truyền đạt những nội dung cốt lõi trong thời gian ngắn như thế này nên đã giúp ích cho mình rất nhiều. Xin cảm ơn bạn.
Chào bạn "Kẻ cuồng lập trình", cảm ơn bạn đã để lại đánh giá tốt nhé!! Mình sẽ cố gắng cung cấp thêm nhiều nội dung hữu ích hơn nữa trong tương lai. Xin cảm ơn!!
Không ngờ trong thời gian ngắn như vậy mà chúng ta đã làm được nhiều bài thực hành đến thế... Tài liệu thực hành rất phong phú nên tôi đã học hỏi được rất nhiều điều bổ ích.