Nó là máy chủ lưu trữ tài nguyên và tệp cho các trang web.

Nếu bạn thấy thông báo này, điều đó có nghĩa là chúng tôi đang gặp sự cố khi tải các tài nguyên bên ngoài trên trang web của mình

Nếu bạn đang sử dụng bộ lọc web, vui lòng đảm bảo rằng các miền *. kastatic. tổ chức và *. kasandbox. org được bỏ chặn

Mặt trong và mặt trước của máy chủ Dell PowerEdge, một máy tính được thiết kế để gắn trong môi trường giá đỡ. Nó thường được sử dụng như một máy chủ web

Nhiều máy chủ web có thể được sử dụng cho một trang web có lưu lượng truy cập cao

Trang trại máy chủ web với hàng nghìn máy chủ web được sử dụng cho các trang web có lưu lượng truy cập siêu cao

Máy chủ web là phần mềm máy tính và phần cứng cơ bản chấp nhận yêu cầu qua HTTP [giao thức mạng được tạo để phân phối nội dung web] hoặc HTTPS biến thể an toàn của nó. Tác nhân người dùng, thường là trình duyệt web hoặc trình thu thập thông tin web, bắt đầu giao tiếp bằng cách đưa ra yêu cầu đối với trang web hoặc tài nguyên khác bằng HTTP và máy chủ phản hồi với nội dung của tài nguyên đó hoặc thông báo lỗi. Máy chủ web cũng có thể chấp nhận và lưu trữ tài nguyên được gửi từ tác nhân người dùng nếu được định cấu hình để làm như vậy. [1] [2]

Phần cứng được sử dụng để chạy máy chủ web có thể thay đổi tùy theo khối lượng yêu cầu mà nó cần xử lý. Ở mức thấp nhất của phạm vi là các hệ thống nhúng, chẳng hạn như bộ định tuyến chạy một máy chủ web nhỏ làm giao diện cấu hình của nó. Một trang web Internet có lưu lượng truy cập cao có thể xử lý các yêu cầu với hàng trăm máy chủ chạy trên giá máy tính tốc độ cao

Tài nguyên được gửi từ máy chủ web có thể là một tệp có sẵn [nội dung tĩnh] có sẵn cho máy chủ web hoặc nó có thể được tạo tại thời điểm yêu cầu [nội dung động] bởi một chương trình khác giao tiếp với phần mềm máy chủ. Cái trước thường có thể được phục vụ nhanh hơn và có thể được lưu vào bộ đệm dễ dàng hơn cho các yêu cầu lặp lại, trong khi cái sau hỗ trợ nhiều ứng dụng hơn

Các công nghệ như REST và SOAP, sử dụng HTTP làm cơ sở cho giao tiếp giữa máy tính với máy tính nói chung, cũng như hỗ trợ cho các tiện ích mở rộng WebDAV, đã mở rộng ứng dụng của máy chủ web ngoài mục đích ban đầu là phục vụ các trang mà con người có thể đọc được.

Lịch sử[sửa]

Đề xuất web đầu tiên [1989] được đánh giá là "mơ hồ nhưng thú vị. "

Máy chủ web đầu tiên trên thế giới, máy trạm NeXT Computer với Ethernet, 1990. Nhãn trường hợp đọc. "Máy này là một máy chủ. KHÔNG NGUỒN NÓ XUỐNG. "

Đây là một lịch sử rất ngắn gọn về các chương trình máy chủ web, vì vậy một số thông tin nhất thiết phải trùng lặp với lịch sử của các trình duyệt web, World Wide Web và Internet;

Dự án WWW ban đầu [1989-1991][sửa | sửa mã nguồn]

Vào tháng 3 năm 1989, Sir Tim Berners-Lee đã đề xuất một dự án mới cho chủ nhân của mình là CERN, với mục tiêu giảm bớt việc trao đổi thông tin giữa các nhà khoa học bằng cách sử dụng một hệ thống siêu văn bản. Đề xuất có tiêu đề "Siêu văn bản và CERN", đã yêu cầu bình luận và nó đã được một số người đọc. Vào tháng 10 năm 1990, đề xuất đã được sửa đổi và bổ sung [có đồng tác giả là Robert Cailliau], và cuối cùng, nó đã được thông qua. [3] [4] [5]

Từ cuối năm 1990 đến đầu năm 1991, dự án đã dẫn đến việc Berners-Lee và các nhà phát triển của ông viết và thử nghiệm một số thư viện phần mềm cùng với ba chương trình, ban đầu chạy trên Hệ điều hành NeXTSTEP được cài đặt trên các máy trạm NeXT. [6] [7] [5]

Những trình duyệt ban đầu đó đã truy xuất các trang web từ [các] máy chủ web bằng giao thức truyền thông cơ bản mới có tên là HTTP 0. 9

Tháng 8 năm 1991 Tim Berner-Lee công bố sự ra đời của công nghệ WWW và khuyến khích các nhà khoa học áp dụng và phát triển nó. [8] Ngay sau đó, những chương trình đó cùng với mã nguồn của chúng đã được cung cấp cho những người quan tâm đến việc sử dụng chúng. [6] Trên thực tế, CERN cho phép những người khác một cách không chính thức, bao gồm cả các nhà phát triển, v.v. , để chơi và có thể phát triển hơn nữa những gì nó đã được tạo ra cho đến thời điểm đó. Đây là sự ra đời chính thức của CERN httpd. Kể từ đó, Berner-Lee bắt đầu thúc đẩy việc áp dụng và sử dụng các chương trình đó cùng với việc chuyển chúng sang các hệ điều hành khác. [5]

Phát triển nhanh và hoang dã [1991-1995][sửa | sửa mã nguồn]

Số trang web đang hoạt động [1991-1996][9][10]

Vào tháng 12 năm 1991, máy chủ web đầu tiên bên ngoài Châu Âu đã được cài đặt tại SLAC [U. S. A. ]. [7] Đây là một sự kiện rất quan trọng vì nó bắt đầu giao tiếp web xuyên lục địa giữa các trình duyệt web và máy chủ web

Trong năm 1991-1993, chương trình máy chủ web CERN tiếp tục được nhóm www tích cực phát triển, trong khi đó, nhờ có sẵn mã nguồn và các thông số kỹ thuật công khai của giao thức HTTP, nhiều triển khai máy chủ web khác bắt đầu được phát triển.

Vào tháng 4 năm 1993, CERN đã đưa ra một tuyên bố chính thức công khai nói rằng ba thành phần của phần mềm Web [máy khách chế độ dòng cơ bản, máy chủ web và thư viện mã chung], cùng với mã nguồn của chúng, đã được đưa vào phạm vi công cộng. [11] Tuyên bố này đã giải phóng các nhà phát triển máy chủ web khỏi mọi vấn đề pháp lý có thể xảy ra về việc phát triển sản phẩm phái sinh dựa trên mã nguồn đó [một mối đe dọa chưa từng tồn tại trên thực tế]

Vào đầu năm 1994, đáng chú ý nhất trong số các máy chủ web mới là NCSA httpd chạy trên nhiều hệ điều hành dựa trên Unix và có thể phục vụ nội dung được tạo động bằng cách triển khai phương thức HTTP

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
7 và CGI để giao tiếp với các chương trình bên ngoài. Những khả năng này, cùng với các tính năng đa phương tiện của trình duyệt Mosaic của NCSA [cũng có thể quản lý các FORM HTML để gửi dữ liệu đến máy chủ web] đã làm nổi bật tiềm năng của công nghệ web đối với các ứng dụng điện toán phân tán và xuất bản.

Vào nửa cuối năm 1994, sự phát triển của NCSA httpd bị đình trệ đến mức một nhóm các nhà phát triển phần mềm bên ngoài, quản trị trang web và các nhân vật chuyên nghiệp khác quan tâm đến máy chủ đó, bắt đầu viết và thu thập các bản vá nhờ mã nguồn NCSA httpd có sẵn cho . Vào đầu năm 1995, tất cả các bản vá đó đều được áp dụng cho lần phát hành cuối cùng của mã nguồn NCSA và sau một số thử nghiệm, dự án máy chủ HTTP Apache đã được bắt đầu. [12][13]

Vào cuối năm 1994, một máy chủ web thương mại mới, có tên là Netsite, đã được phát hành với các tính năng cụ thể. Đây là sản phẩm đầu tiên trong số nhiều sản phẩm tương tự khác được phát triển đầu tiên bởi Netscape, sau đó là Sun Microsystems và cuối cùng là Tập đoàn Oracle.

Vào giữa năm 1995, phiên bản đầu tiên của IIS đã được Microsoft phát hành cho hệ điều hành Windows NT. Đây là một sự kiện đáng chú ý vì đánh dấu sự gia nhập, trong lĩnh vực công nghệ World Wide Web, của một nhà phát triển và nhà cung cấp thương mại rất quan trọng đã và vẫn đang đóng vai trò quan trọng ở cả hai phía [máy khách và máy chủ] của web.

Vào nửa cuối năm 1995, các máy chủ web của CERN và NCSA bắt đầu suy giảm [về tỷ lệ sử dụng trên toàn cầu] do việc sử dụng rộng rãi các máy chủ web mới có chu kỳ phát triển nhanh hơn cùng với nhiều tính năng hơn, nhiều bản sửa lỗi được áp dụng hơn và hiệu suất cao hơn so với

Tăng trưởng bùng nổ và cạnh tranh [1996-2014][sửa | sửa mã nguồn]

Số trang web đang hoạt động [1996-2002][10][14]

Vào cuối năm 1996, đã có hơn 50 chương trình phần mềm máy chủ web [khác nhau] được biết đến dành cho tất cả những ai muốn sở hữu một tên miền Internet và/hoặc lưu trữ các trang web. [15] Nhiều người trong số họ chỉ tồn tại trong thời gian ngắn và bị thay thế bởi các máy chủ web khác

Việc xuất bản các RFC về các phiên bản giao thức HTTP/1. 0 [1996] và HTTP/1. 1 [1997, 1999], buộc hầu hết các máy chủ web phải tuân thủ [không phải lúc nào cũng hoàn toàn] các tiêu chuẩn đó. Việc sử dụng các kết nối liên tục TCP/IP [HTTP/1. 1] các máy chủ web cần thiết để tăng số lượng kết nối đồng thời tối đa được phép và cải thiện mức độ khả năng mở rộng của chúng

Từ năm 1996 đến 1999, Netscape Enterprise Server và IIS của Microsoft nổi lên trong số các tùy chọn thương mại hàng đầu trong khi trong số các chương trình nguồn mở và có sẵn miễn phí, Máy chủ HTTP Apache giữ vị trí dẫn đầu là máy chủ được ưa thích [vì độ tin cậy và nhiều tính năng của nó]

Trong những năm đó, cũng có một máy chủ web thương mại, rất sáng tạo và đáng chú ý khác có tên là Zeus [hiện đã ngừng sản xuất] được biết đến như một trong những máy chủ web nhanh nhất và có khả năng mở rộng nhất hiện có trên thị trường, ít nhất là cho đến thập kỷ đầu tiên của những năm 2000, mặc dù

Apache đã trở thành máy chủ web được sử dụng nhiều nhất từ ​​​​giữa năm 1996 đến cuối năm 2015 khi sau một vài năm suy giảm, ban đầu nó đã bị IIS vượt qua và sau đó là Nginx. Sau đó, IIS giảm xuống mức phần trăm sử dụng thấp hơn nhiều so với Apache [xem thêm thị phần]

Từ năm 2005-2006, Apache bắt đầu cải thiện tốc độ và mức độ mở rộng của nó bằng cách giới thiệu các tính năng hiệu suất mới [e. g. sự kiện MPM và bộ đệm nội dung mới]. [16][17] Vì những cải tiến hiệu suất mới này ban đầu được đánh dấu là thử nghiệm, chúng không được người dùng kích hoạt trong một thời gian dài và do đó, Apache càng phải chịu sự cạnh tranh của các máy chủ thương mại và trên hết là của các nền tảng mở khác.

Trên thực tế, một vài năm sau năm 2000 bắt đầu, không chỉ các máy chủ web thương mại và cạnh tranh cao khác, e. g. LiteSpeed, cũng như nhiều chương trình mã nguồn mở khác, thường có chất lượng tuyệt vời và hiệu suất rất cao, trong đó đáng chú ý là Hiawatha, máy chủ HTTP Cherokee, Lighttpd, Nginx và các sản phẩm liên quan/có nguồn gốc khác cũng có sẵn với sự hỗ trợ thương mại, đã xuất hiện

Khoảng năm 2007-2008, hầu hết các trình duyệt web phổ biến đã tăng giới hạn mặc định trước đây của họ là 2 kết nối liên tục trên mỗi miền máy chủ [giới hạn do RFC-2616 khuyến nghị] [18] lên 4, 6 hoặc 8 kết nối liên tục trên mỗi miền máy chủ, để tăng tốc độ . [19] Trong vòng một năm, trung bình, những thay đổi này đã tăng gần gấp ba lần số lượng kết nối liên tục tối đa mà các máy chủ web phải quản lý. Xu hướng này [tăng số lượng kết nối liên tục] chắc chắn đã tạo động lực mạnh mẽ cho việc áp dụng proxy ngược trước các máy chủ web chậm hơn và nó cũng tạo thêm một cơ hội cho các máy chủ web mới nổi có thể thể hiện tất cả tốc độ và khả năng của chúng. . [20]

Những thách thức mới [2015 và những năm sau đó][sửa | sửa mã nguồn]

Vào năm 2015, RFC đã xuất bản phiên bản giao thức mới [HTTP/2] và do việc triển khai các thông số kỹ thuật mới không hề đơn giản chút nào, nên một vấn đề nan giải đã nảy sinh giữa các nhà phát triển máy chủ web ít phổ biến hơn [e. g. với tỷ lệ phần trăm sử dụng thấp hơn 1%. 2%], về việc thêm hoặc không thêm hỗ trợ cho phiên bản giao thức mới đó. [21][22]

Trên thực tế, việc hỗ trợ HTTP/2 thường yêu cầu những thay đổi cơ bản đối với việc triển khai nội bộ của chúng do nhiều yếu tố [thực tế luôn yêu cầu các kết nối được mã hóa, khả năng phân biệt giữa HTTP/1. x và HTTP/2 trên cùng một cổng TCP, biểu diễn nhị phân của thông báo HTTP, mức độ ưu tiên của thông báo, nén tiêu đề HTTP, sử dụng luồng còn được gọi là kết nối phụ TCP/IP và kiểm soát luồng liên quan, v.v. ] và vì vậy một số nhà phát triển của các máy chủ web đó đã chọn không hỗ trợ phiên bản HTTP/2 mới [ít nhất là trong tương lai gần] cũng vì những lý do chính này. [21][22]

  • giao thức HTTP/1. x dù sao cũng đã được các trình duyệt hỗ trợ trong một thời gian rất dài [có thể là mãi mãi] để không xảy ra tình trạng không tương thích giữa máy khách và máy chủ trong tương lai;
  • triển khai HTTP/2 được coi là một nhiệm vụ vô cùng phức tạp, có thể mở ra cơ hội cho một loại lỗi hoàn toàn mới mà cho đến năm 2015 vẫn chưa tồn tại và do đó, nó sẽ yêu cầu các khoản đầu tư đáng kể vào việc phát triển và thử nghiệm việc triển khai giao thức mới;
  • thêm hỗ trợ HTTP/2 luôn có thể được thực hiện trong tương lai trong trường hợp những nỗ lực sẽ được chứng minh

Thay vào đó, các nhà phát triển của hầu hết các máy chủ web phổ biến đã vội vàng cung cấp giao thức mới, không chỉ vì họ có lực lượng lao động và thời gian để làm như vậy mà còn bởi vì thông thường việc triển khai giao thức SPDY trước đây của họ có thể được sử dụng lại làm điểm khởi đầu. . Một lý do khác khiến các nhà phát triển đó hành động nhanh chóng là các quản trị viên web cảm thấy áp lực của lưu lượng truy cập web ngày càng tăng và họ thực sự muốn cài đặt và thử - càng sớm càng tốt - một thứ có thể giảm đáng kể số lượng kết nối TCP/IP và tăng tốc độ . [23]

Vào năm 2020–2021, động lực HTTP/2 về việc triển khai nó [bởi các máy chủ web hàng đầu và trình duyệt web phổ biến] đã được sao chép một phần sau khi xuất bản các bản nháp nâng cao của RFC trong tương lai về giao thức HTTP/3

Tổng quan về kỹ thuật[sửa]

Máy khách PC được kết nối với máy chủ web qua Internet

Tổng quan kỹ thuật sau đây chỉ nên được coi là một nỗ lực để đưa ra một vài ví dụ rất hạn chế về một số tính năng có thể được triển khai trong máy chủ web và một số tác vụ mà nó có thể thực hiện để có một kịch bản đủ rộng về chủ đề

Một chương trình máy chủ web đóng vai trò của một máy chủ trong mô hình máy khách-máy chủ bằng cách triển khai một hoặc nhiều phiên bản của giao thức HTTP, thường bao gồm biến thể bảo mật HTTPS và các tính năng và tiện ích mở rộng khác được coi là hữu ích cho việc sử dụng theo kế hoạch của nó

Độ phức tạp và hiệu quả của chương trình máy chủ web có thể thay đổi rất nhiều tùy thuộc vào [e. g. ]. [1]

  • các tính năng phổ biến được triển khai;
  • các nhiệm vụ thông thường đã thực hiện;
  • mục tiêu là hiệu suất và khả năng mở rộng;
  • mô hình phần mềm và các kỹ thuật được áp dụng để đạt được mức hiệu suất và khả năng mở rộng mong muốn;
  • mục tiêu phần cứng và loại sử dụng, e. g. hệ thống nhúng, máy chủ web lưu lượng trung bình thấp, máy chủ web Internet lưu lượng truy cập cao

Các đặc điểm chung[sửa]

Mặc dù các chương trình máy chủ web khác nhau về cách chúng được triển khai, nhưng hầu hết chúng đều cung cấp các tính năng chung sau

Đây là những tính năng cơ bản mà hầu hết các máy chủ web thường có

  • phục vụ nội dung tĩnh. để có thể phục vụ nội dung tĩnh [tệp web] cho khách hàng thông qua giao thức HTTP
  • HTTP. hỗ trợ cho một hoặc nhiều phiên bản giao thức HTTP để gửi các phiên bản phản hồi HTTP tương thích với các phiên bản yêu cầu HTTP của máy khách, e. g. HTTP/1. 0, HTTP/1. 1 [cuối cùng cũng với các kết nối được mã hóa HTTPS], ngoài ra, nếu có, HTTP/2, HTTP/3
  • ghi nhật ký. thông thường các máy chủ web cũng có khả năng ghi nhật ký một số thông tin, về các yêu cầu của máy khách và phản hồi của máy chủ, để ghi các tệp cho mục đích bảo mật và thống kê

Một vài tính năng nâng cao và phổ biến khác [chỉ có một lựa chọn rất ngắn] là những tính năng sau

Nhiệm vụ chung[sửa]

Một chương trình máy chủ web, khi nó đang chạy, thường thực hiện một số nhiệm vụ chung, [e. g. ]. [1]

  • bắt đầu, tùy chọn đọc và áp dụng các cài đặt được tìm thấy trong [các] tệp cấu hình của nó hoặc ở nơi khác, tùy chọn mở tệp nhật ký, bắt đầu lắng nghe các kết nối / yêu cầu của máy khách;
  • tùy chọn cố gắng điều chỉnh hành vi chung của nó theo cài đặt và điều kiện hoạt động hiện tại của nó;
  • quản lý [các] kết nối máy khách [chấp nhận kết nối mới hoặc đóng kết nối hiện có theo yêu cầu];
  • nhận yêu cầu của khách hàng [bằng cách đọc tin nhắn HTTP]
  • thực thi hoặc từ chối phương thức HTTP được yêu cầu
  • trả lời yêu cầu của khách hàng gửi phản hồi HTTP thích hợp [e. g. các tài nguyên được yêu cầu hoặc thông báo lỗi] cuối cùng sẽ xác minh hoặc thêm các tiêu đề HTTP vào các tiêu đề được gửi bởi các chương trình/mô-đun động;
  • tùy chọn ghi nhật ký [một phần hoặc toàn bộ] yêu cầu của máy khách và/hoặc phản hồi của nó đối với tệp nhật ký người dùng bên ngoài hoặc tệp nhật ký hệ thống bằng nhật ký hệ thống, thường sử dụng định dạng nhật ký chung;
  • tùy chọn ghi lại các thông báo xử lý về các điểm bất thường đã phát hiện hoặc các sự kiện đáng chú ý khác [e. g. trong các yêu cầu của máy khách hoặc trong chức năng nội bộ của nó] sử dụng nhật ký hệ thống hoặc một số cơ sở hệ thống khác;
  • tùy chọn tạo số liệu thống kê về lưu lượng truy cập web được quản lý và/hoặc hiệu suất của nó;
  • nhiệm vụ tùy chỉnh khác

Đọc thông báo yêu cầu[sửa]

Các chương trình máy chủ web có thể. [24] [25] [26]

  • để đọc một thông báo yêu cầu HTTP;
  • để giải thích nó;
  • để xác minh cú pháp của nó;
  • để xác định các tiêu đề HTTP đã biết và trích xuất các giá trị của chúng từ chúng

Khi một thông báo yêu cầu HTTP đã được giải mã và xác minh, các giá trị của nó có thể được sử dụng để xác định xem yêu cầu đó có được đáp ứng hay không. Điều này yêu cầu nhiều bước khác, bao gồm cả kiểm tra bảo mật

Chuẩn hóa URL[sửa]

Các chương trình máy chủ web thường thực hiện một số loại chuẩn hóa URL [URL được tìm thấy trong hầu hết các thông báo yêu cầu HTTP] theo thứ tự

  • để làm cho đường dẫn tài nguyên luôn là đường dẫn thống nhất rõ ràng từ thư mục gốc của trang web;
  • để giảm rủi ro bảo mật [e. g. bằng cách chặn dễ dàng hơn các nỗ lực truy cập tài nguyên tĩnh bên ngoài thư mục gốc của trang web hoặc truy cập vào các phần của đường dẫn bên dưới thư mục gốc của trang web bị cấm hoặc yêu cầu ủy quyền];
  • để làm cho đường dẫn của tài nguyên web dễ nhận biết hơn bởi con người và các chương trình phân tích nhật ký web [còn được gọi là máy phân tích nhật ký/ứng dụng thống kê]

Thuật ngữ chuẩn hóa URL đề cập đến quá trình sửa đổi và chuẩn hóa URL theo cách nhất quán. Có một số loại chuẩn hóa có thể được thực hiện, bao gồm chuyển đổi lược đồ và máy chủ thành chữ thường. Trong số các tiêu chuẩn hóa quan trọng nhất là việc loại bỏ ". " và ". " đoạn đường dẫn và thêm dấu gạch chéo vào thành phần đường dẫn không trống

Ánh xạ URL[sửa]

"Ánh xạ URL là quá trình một URL được phân tích để tìm ra tài nguyên mà nó đang đề cập đến, để tài nguyên đó có thể được trả lại cho ứng dụng khách yêu cầu. Quá trình này được thực hiện với mọi yêu cầu được gửi đến máy chủ web, với một số yêu cầu được cung cấp cùng với một tệp, chẳng hạn như tài liệu HTML hoặc hình ảnh gif, những yêu cầu khác là kết quả của việc chạy chương trình CGI và những yêu cầu khác do . “[27]

Trong thực tế, các chương trình máy chủ web triển khai các tính năng nâng cao, ngoài việc cung cấp nội dung tĩnh đơn giản [e. g. công cụ viết lại URL, cung cấp nội dung động], thường phải tìm ra cách xử lý URL đó, e. g

  • dưới dạng chuyển hướng URL, chuyển hướng đến một URL khác;
  • như một yêu cầu tĩnh của nội dung tệp;
  • như một yêu cầu năng động của
    • danh sách thư mục của các tệp hoặc thư mục con khác có trong thư mục đó;
    • các loại yêu cầu động khác để xác định chương trình/bộ xử lý mô-đun có thể xử lý loại đường dẫn URL đó và chuyển cho nó các phần URL khác, tôi. e. thường là các biến chuỗi thông tin đường dẫn và truy vấn

Một hoặc nhiều tệp cấu hình của máy chủ web có thể chỉ định ánh xạ các phần của đường dẫn URL [e. g. phần đầu tiên của đường dẫn tệp, phần mở rộng tên tệp và các thành phần đường dẫn khác] tới một trình xử lý URL cụ thể [tệp, thư mục, chương trình bên ngoài hoặc mô-đun bên trong]. [28]

Khi máy chủ web triển khai một hoặc nhiều tính năng nâng cao nêu trên thì phần đường dẫn của URL hợp lệ có thể không phải lúc nào cũng khớp với đường dẫn hệ thống tệp hiện có trong cây thư mục trang web [tệp hoặc thư mục trong hệ thống tệp] vì nó có thể tham chiếu

Dịch đường dẫn URL sang hệ thống tệp[sửa | sửa mã nguồn]

Các chương trình máy chủ web có thể dịch đường dẫn URL [tất cả hoặc một phần của nó], đề cập đến đường dẫn hệ thống tệp vật lý, thành đường dẫn tuyệt đối trong thư mục gốc của trang web đích. [28]

Thư mục gốc của trang web có thể được chỉ định bởi tệp cấu hình hoặc theo một số quy tắc nội bộ của máy chủ web bằng cách sử dụng tên của trang web là phần lưu trữ của URL được tìm thấy trong yêu cầu máy khách HTTP. [28]

Dịch đường dẫn sang hệ thống tệp được thực hiện cho các loại tài nguyên web sau

  • một tệp cục bộ, thường không thể thực thi được [yêu cầu tĩnh đối với nội dung tệp];
  • một thư mục cục bộ [yêu cầu động. danh sách thư mục được tạo nhanh chóng];
  • tên chương trình [các yêu cầu động được thực thi bằng giao diện CGI hoặc SCGI và đầu ra của chúng được máy chủ web đọc và gửi lại cho khách hàng đã thực hiện yêu cầu HTTP]

Máy chủ web nối thêm đường dẫn được tìm thấy trong URL được yêu cầu [thông báo yêu cầu HTTP] và nối nó vào đường dẫn của thư mục gốc của trang web [Máy chủ]. Trên máy chủ Apache, giá trị này thường là

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
0 [trên máy Unix, thông thường là.
GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
1]. Xem các ví dụ sau về cách nó có thể dẫn đến

Dịch đường dẫn URL cho yêu cầu tệp tĩnh

Ví dụ về yêu cầu tĩnh của tệp hiện có được chỉ định bởi URL sau

//www.example.com/path/file.html

Tác nhân người dùng của khách hàng kết nối với

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
2 và sau đó gửi HTTP/1 sau. 1 yêu cầu

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive

Kết quả là tài nguyên hệ thống tệp cục bộ

/home/www/www.example.com/path/file.html

Sau đó, máy chủ web sẽ đọc tệp, nếu nó tồn tại và gửi phản hồi tới trình duyệt web của máy khách. Phản hồi sẽ mô tả nội dung của tệp và chứa chính tệp đó hoặc thông báo lỗi sẽ trả về cho biết tệp không tồn tại hoặc quyền truy cập tệp bị cấm

Dịch đường dẫn URL cho yêu cầu thư mục [không có tệp chỉ mục tĩnh]

Ví dụ về một yêu cầu động tiềm ẩn của một thư mục hiện có được chỉ định bởi URL sau

//www.example.com/directory1/directory2/

Tác nhân người dùng của khách hàng kết nối với

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
2 và sau đó gửi HTTP/1 sau. 1 yêu cầu

________số 8

Kết quả là đường dẫn thư mục cục bộ

/home/www/www.example.com/directory1/directory2/

Sau đó, máy chủ web xác minh sự tồn tại của thư mục và nếu nó tồn tại và nó có thể được truy cập thì sẽ cố gắng tìm ra một tệp chỉ mục [trong trường hợp này không tồn tại] và do đó, nó chuyển yêu cầu tới một mô-đun nội bộ hoặc một chương trình dành riêng. . Phản hồi sẽ mô tả nội dung của thư mục [danh sách các thư mục con và tệp được chứa] hoặc một thông báo lỗi sẽ trả về nói rằng thư mục không tồn tại hoặc quyền truy cập của nó bị cấm

Bản dịch đường dẫn URL cho yêu cầu chương trình động

Đối với yêu cầu động, đường dẫn URL do máy khách chỉ định phải tham chiếu đến chương trình bên ngoài hiện có [thường là tệp thực thi có CGI] được máy chủ web sử dụng để tạo nội dung động. [29]

Ví dụ về yêu cầu động sử dụng tệp chương trình để tạo đầu ra

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
0

Tác nhân người dùng của khách hàng kết nối với

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
2 và sau đó gửi HTTP/1 sau. 1 yêu cầu

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
2

Kết quả là đường dẫn tệp cục bộ của chương trình [trong ví dụ này là chương trình PHP]

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
3

Máy chủ web thực thi chương trình đó, chuyển vào đường dẫn-thông tin và chuỗi truy vấn

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
5 để chương trình có thông tin cần thiết để chạy. [Trong trường hợp này, nó sẽ trả về một tài liệu HTML chứa chế độ xem các mục diễn đàn được sắp xếp theo chủ đề từ ngày 15 tháng 10 năm 2021]. Ngoài ra, máy chủ web đọc dữ liệu được gửi từ chương trình bên ngoài và gửi lại dữ liệu đó cho máy khách đã thực hiện yêu cầu

Quản lý thông báo yêu cầu[sửa]

Khi một yêu cầu đã được đọc, giải thích và xác minh, nó phải được quản lý tùy thuộc vào phương thức, URL và các tham số của nó, có thể bao gồm các giá trị của tiêu đề HTTP

Trong thực tế, máy chủ web phải xử lý yêu cầu bằng cách sử dụng một trong các đường dẫn phản hồi này. [28]

  • nếu một cái gì đó trong yêu cầu không được chấp nhận [trong dòng trạng thái hoặc tiêu đề thư], máy chủ web đã gửi phản hồi lỗi;
  • nếu yêu cầu có một phương pháp [e. g.
    GET /path/file.html HTTP/1.1
    Host: www.example.com
    Connection: keep-alive
    
    6] có thể được đáp ứng bằng mã chung của máy chủ web thì phản hồi thành công sẽ được gửi;
  • nếu URL yêu cầu ủy quyền thì thông báo lỗi ủy quyền sẽ được gửi;
  • nếu URL ánh xạ tới một chuyển hướng thì một thông báo chuyển hướng sẽ được gửi;
  • nếu URL ánh xạ tới một tài nguyên động [đường dẫn ảo hoặc danh sách thư mục] thì trình xử lý của nó [mô-đun bên trong hoặc chương trình bên ngoài] được gọi và các tham số yêu cầu [chuỗi truy vấn và thông tin đường dẫn] được chuyển đến nó để cho phép nó
  • nếu URL ánh xạ tới một tài nguyên tĩnh [thường là một tệp trên hệ thống tệp] thì trình xử lý tĩnh bên trong được gọi để gửi tệp đó;
  • nếu phương thức yêu cầu không được biết hoặc nếu có một số điều kiện không được chấp nhận khác [e. g. không tìm thấy tài nguyên, lỗi máy chủ nội bộ, v.v. ] thì một phản hồi lỗi được gửi

Phục vụ nội dung tĩnh[sửa]

Máy khách PC giao tiếp qua mạng với máy chủ web chỉ phục vụ nội dung tĩnh

Nếu một chương trình máy chủ web có khả năng phục vụ nội dung tĩnh và nó đã được cấu hình để làm như vậy, thì nó có thể gửi nội dung tệp bất cứ khi nào thông báo yêu cầu có đường dẫn URL phù hợp [sau khi ánh xạ URL, dịch URL và chuyển hướng URL] mà . [28]

Loại nội dung đó được gọi là tĩnh vì thông thường nó không bị thay đổi bởi máy chủ web khi nó được gửi tới máy khách và vì nó vẫn giữ nguyên cho đến khi nó được sửa đổi [sửa đổi tệp] bởi một số chương trình

GHI CHÚ. khi chỉ phục vụ nội dung tĩnh, một chương trình máy chủ web thường không thay đổi nội dung tệp của các trang web được phục vụ [vì chúng chỉ được đọc và không bao giờ được ghi] và do đó, chỉ cần hỗ trợ các phương thức HTTP này là đủ

Phản hồi của nội dung tệp tĩnh có thể được tăng tốc bằng bộ đệm tệp

Các tập tin chỉ mục thư mục[sửa]

Nếu chương trình máy chủ web nhận được thông báo yêu cầu ứng dụng khách có URL có đường dẫn khớp với một trong các thư mục hiện có và thư mục đó có thể truy cập được và [các] tệp chỉ mục thư mục phục vụ được bật thì chương trình máy chủ web có thể cố gắng phục vụ tệp đầu tiên đã biết [

Tên được sử dụng nhiều nhất cho các tệp chỉ mục tĩnh là.

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
7,
GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
8 và
GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive
9

Các tệp thông thường [ chỉnh sửa ]

Nếu chương trình máy chủ web nhận được thông báo yêu cầu ứng dụng khách có URL có đường dẫn khớp với tên tệp của tệp hiện có và tệp đó có thể truy cập được bằng chương trình máy chủ web và các thuộc tính của nó khớp với quy tắc nội bộ của chương trình máy chủ web, thì chương trình máy chủ web có thể gửi thư đó

Thông thường, vì lý do bảo mật, hầu hết các chương trình máy chủ web được cấu hình sẵn để chỉ phục vụ các tệp thông thường hoặc để tránh sử dụng các loại tệp đặc biệt như tệp thiết bị, cùng với các liên kết tượng trưng hoặc liên kết cứng tới chúng. Mục đích là để tránh các tác dụng phụ không mong muốn khi cung cấp tài nguyên web tĩnh. [30]

Cung cấp nội dung động[sửa]

Máy khách PC giao tiếp qua mạng với máy chủ web phục vụ nội dung tĩnh và động

Nếu một chương trình máy chủ web có khả năng phục vụ nội dung động và nó đã được cấu hình để làm như vậy, thì nó có thể giao tiếp với mô-đun bên trong thích hợp hoặc chương trình bên ngoài [được liên kết với đường dẫn URL được yêu cầu] để chuyển cho nó các tham số của . [cần dẫn nguồn]

GHI CHÚ. khi phục vụ nội dung tĩnh và động, chương trình máy chủ web thường phải hỗ trợ cả phương thức HTTP sau để có thể nhận dữ liệu từ [các] máy khách một cách an toàn và do đó, để có thể lưu trữ cả các trang web có [các] biểu mẫu tương tác . g. nhiều mục nhập dữ liệu hoặc tải lên tệp] vào máy chủ web/chương trình/mô-đun bên ngoài

Để có thể giao tiếp với các mô-đun nội bộ và/hoặc chương trình bên ngoài, chương trình máy chủ web phải triển khai một hoặc nhiều trong số nhiều giao diện cổng có sẵn [xem thêm Giao diện cổng máy chủ web được sử dụng cho nội dung động]

Ba giao diện cổng tiêu chuẩn và lịch sử là những giao diện sau

CGIMột chương trình CGI bên ngoài được chạy bởi chương trình máy chủ web cho từng yêu cầu động, sau đó chương trình máy chủ web đọc từ đó phản hồi dữ liệu được tạo và sau đó gửi lại cho máy khách. SCGIMột chương trình SCGI bên ngoài [thường là một quy trình] được khởi động một lần bởi chương trình máy chủ web hoặc bởi một số chương trình/quy trình khác và sau đó nó chờ kết nối mạng; . FastCGIMột chương trình FastCGI bên ngoài [nó thường là một quá trình] được khởi động một lần bởi chương trình máy chủ web hoặc bởi một số chương trình/quy trình khác và sau đó nó chờ kết nối mạng được thiết lập vĩnh viễn bởi máy chủ web; Danh sách thư mục [ chỉnh sửa ]

Danh sách thư mục được tạo động bởi máy chủ web

Một chương trình máy chủ web có thể có khả năng quản lý việc tạo động [nhanh chóng] danh sách chỉ mục thư mục của các tệp và thư mục con. [31]

Nếu một chương trình máy chủ web được cấu hình để làm như vậy và một đường dẫn URL được yêu cầu khớp với một thư mục hiện có và quyền truy cập của nó được cho phép và không tìm thấy tệp chỉ mục tĩnh nào trong thư mục đó thì một trang web [thường ở định dạng HTML], chứa danh sách các tệp . Nếu nó không thể được tạo ra, một lỗi được trả về

Một số chương trình máy chủ web cho phép tùy chỉnh danh sách thư mục bằng cách cho phép sử dụng mẫu trang web [tài liệu HTML có chứa trình giữ chỗ, ví dụ:. g.

/home/www/www.example.com/path/file.html
0, v.v. , được thay thế bằng các giá trị trường của từng mục nhập tệp được tìm thấy trong thư mục của máy chủ web], e. g.
/home/www/www.example.com/path/file.html
1 hoặc việc sử dụng HTML và mã nguồn nhúng được giải thích và thực thi nhanh chóng, e. g.
/home/www/www.example.com/path/file.html
2, và/hoặc bằng cách hỗ trợ việc sử dụng các chương trình chỉ mục động như CGI, SCGI, FGCI, e. g.
/home/www/www.example.com/path/file.html
3,
/home/www/www.example.com/path/file.html
4,
/home/www/www.example.com/path/file.html
5

Việc sử dụng danh sách thư mục được tạo động thường được tránh hoặc giới hạn ở một số thư mục được chọn của trang web vì thế hệ đó chiếm nhiều tài nguyên hệ điều hành hơn so với việc gửi trang chỉ mục tĩnh

Cách sử dụng chính của danh sách thư mục là cho phép tải xuống các tệp [thường là khi tên, kích thước, thời gian sửa đổi hoặc thuộc tính tệp có thể thay đổi ngẫu nhiên/thường xuyên] mà không yêu cầu cung cấp thêm thông tin cho người dùng yêu cầu. [32]

Xử lý chương trình hoặc mô-đun[sửa | sửa mã nguồn]

Một chương trình bên ngoài hoặc một mô-đun bên trong [đơn vị xử lý] có thể thực thi một số loại chức năng ứng dụng có thể được sử dụng để lấy dữ liệu từ hoặc lưu trữ dữ liệu vào một hoặc nhiều kho lưu trữ dữ liệu, ví dụ:. g. [cần dẫn nguồn]

  • tập tin [hệ thống tập tin];
  • cơ sở dữ liệu [DB];
  • các nguồn khác nằm trong máy tính cục bộ hoặc trong các máy tính khác

Đơn vị xử lý có thể trả về bất kỳ loại nội dung web nào, cũng bằng cách sử dụng dữ liệu được lấy từ kho lưu trữ dữ liệu, ví dụ:. g. [cần dẫn nguồn]

Trong thực tế, bất cứ khi nào có nội dung có thể thay đổi, tùy thuộc vào một hoặc nhiều tham số có trong yêu cầu của khách hàng hoặc trong cài đặt cấu hình, thì thông thường, nội dung đó sẽ được tạo động

Gửi tin nhắn phản hồi[sửa]

Các chương trình máy chủ web có thể gửi tin nhắn phản hồi dưới dạng trả lời tin nhắn yêu cầu của khách hàng. [24]

Thông báo phản hồi lỗi có thể được gửi do không thể đọc hoặc giải mã hoặc phân tích hoặc thực hiện thành công thông báo yêu cầu. [25]

GHI CHÚ. các phần sau đây chỉ được báo cáo dưới dạng ví dụ để giúp hiểu ít nhiều máy chủ web làm gì;

Thông báo lỗi[sửa]

Một chương trình máy chủ web có thể trả lời thư yêu cầu của khách hàng với nhiều loại thông báo lỗi, tuy nhiên những lỗi này chủ yếu được chia thành hai loại

Khi trình duyệt máy khách nhận được phản hồi/thông báo lỗi, thì nếu nó liên quan đến yêu cầu chính của người dùng [e. g. URL của tài nguyên web chẳng hạn như trang web] thì thông báo lỗi đó thường được hiển thị trong một số cửa sổ/thông báo trình duyệt

Một chương trình máy chủ web có thể xác minh xem đường dẫn URL được yêu cầu có. [35]

  • mọi người có thể tự do truy cập;
  • yêu cầu xác thực người dùng [yêu cầu thông tin đăng nhập của người dùng, e. g. chẳng hạn như tên người dùng và mật khẩu];
  • quyền truy cập bị cấm đối với một số hoặc tất cả các loại người dùng

Nếu tính năng ủy quyền / quyền truy cập đã được triển khai và bật và quyền truy cập vào tài nguyên web không được cấp, thì tùy thuộc vào quyền truy cập được yêu cầu, chương trình máy chủ web

  • có thể từ chối truy cập bằng cách gửi một thông báo lỗi cụ thể [e. g. truy cập bị cấm];
  • có thể từ chối truy cập bằng cách gửi một thông báo lỗi cụ thể [e. g. truy cập trái phép] thường buộc trình duyệt máy khách yêu cầu người dùng cung cấp thông tin xác thực người dùng bắt buộc;

Chuyển hướng URL[sửa]

Một chương trình máy chủ web có thể có khả năng thực hiện chuyển hướng URL tới các URL mới [vị trí mới] bao gồm việc trả lời thư yêu cầu của máy khách bằng một thông báo phản hồi chứa URL mới phù hợp để truy cập tài nguyên web hiện có hoặc hợp lệ [máy khách nên làm lại . [36]

Chuyển hướng URL của vị trí được sử dụng. [36]

  • để sửa tên thư mục bằng cách thêm dấu gạch chéo cuối '/';[31]
  • để cung cấp một URL mới cho một đường dẫn URL không còn tồn tại đến một đường dẫn mới nơi có thể tìm thấy loại tài nguyên web đó
  • để cung cấp một URL mới cho một tên miền khác khi tên miền hiện tại có quá nhiều tải

ví dụ 1. một đường dẫn URL trỏ đến một tên thư mục nhưng nó không có dấu gạch chéo cuối cùng '/' vì vậy máy chủ web sẽ gửi một chuyển hướng đến máy khách để hướng dẫn nó thực hiện lại yêu cầu với tên đường dẫn cố định. [31]

Từ.
  ______56
Tới.
  ______57

ví dụ 2. toàn bộ bộ tài liệu đã được chuyển vào bên trong chuỗi web để sắp xếp đường dẫn hệ thống tệp của chúng

Từ.
  ______58
Tới.
  ______59

ví dụ 3. toàn bộ bộ tài liệu đã được chuyển đến một trang web mới và bây giờ bắt buộc phải sử dụng các kết nối HTTPS an toàn để truy cập chúng

Từ.
  ______60
Tới.
  ______61

Các ví dụ trên chỉ là một số loại chuyển hướng có thể

Thông báo thành công[sửa mã nguồn]

Một chương trình máy chủ web có thể trả lời một thông báo yêu cầu hợp lệ của máy khách bằng một thông báo thành công, tùy chọn có chứa dữ liệu tài nguyên web được yêu cầu. [37]

Nếu dữ liệu tài nguyên web được gửi lại cho máy khách, thì đó có thể là nội dung tĩnh hoặc nội dung động tùy thuộc vào cách nó được truy xuất [từ tệp hoặc từ đầu ra của một số chương trình/mô-đun]

Bộ đệm nội dung[sửa]

Để tăng tốc độ phản hồi của máy chủ web bằng cách giảm thời gian phản hồi HTTP trung bình và tài nguyên phần cứng được sử dụng, nhiều máy chủ web phổ biến triển khai một hoặc nhiều bộ đệm nội dung, mỗi bộ đệm chuyên về một danh mục nội dung. [38] [39]

Nội dung thường được lưu trữ theo nguồn gốc của nó, e. g

  • nội dung tĩnh
  • nội dung động

Bộ đệm tệp [ chỉnh sửa ]

Trước đây, các nội dung tĩnh được tìm thấy trong các tệp phải được truy cập thường xuyên, ngẫu nhiên và nhanh chóng, hầu hết được lưu trữ trên các đĩa cơ điện từ giữa cuối những năm 1960/1970;

Ngay cả khi có sự trợ giúp của bộ đệm tệp hệ điều hành, sự chậm chạp tương đối/không thường xuyên của các hoạt động I/O liên quan đến các thư mục và tệp được lưu trữ trên đĩa nhanh chóng trở thành một nút cổ chai trong việc tăng hiệu suất mong đợi từ các máy chủ web cấp cao nhất, đặc biệt kể từ giữa cuối những năm 1990,

Bài toán làm thế nào để tăng tốc độ phục vụ các tệp tĩnh một cách hiệu quả hơn, từ đó tăng số lượng yêu cầu/phản hồi tối đa trong một giây [RPS], bắt đầu được tìm hiểu/nghiên cứu từ giữa những năm 1990, với mục đích đề xuất các mô hình bộ nhớ cache hữu ích. . [40]

Trên thực tế, ngày nay, nhiều chương trình máy chủ web phổ biến/hiệu suất cao bao gồm bộ đệm tệp vùng đất người dùng của riêng chúng, được điều chỉnh cho việc sử dụng máy chủ web và sử dụng cách triển khai và tham số cụ thể của chúng. [41] [42] [43]

Việc áp dụng rộng rãi RAID và/hoặc ổ đĩa trạng thái rắn nhanh [phần cứng lưu trữ có tốc độ I/O rất cao] đã giảm nhẹ nhưng tất nhiên không loại bỏ lợi thế của việc tích hợp bộ đệm tệp trong máy chủ web

Bộ đệm động[sửa]

Nội dung động, được xuất bởi một mô-đun bên trong hoặc một chương trình bên ngoài, có thể không phải lúc nào cũng thay đổi thường xuyên [được cung cấp một URL duy nhất với các khóa/tham số] và do đó, có thể trong một thời gian [e. g. từ 1 giây đến vài giờ trở lên], kết quả đầu ra có thể được lưu vào bộ nhớ cache trong RAM hoặc thậm chí trên đĩa nhanh. [44]

Cách sử dụng điển hình của bộ đệm động là khi một trang web có các trang web động về tin tức, thời tiết, hình ảnh, bản đồ, v.v. không thay đổi thường xuyên [e. g. cứ sau n phút] và được truy cập bởi một số lượng lớn khách hàng mỗi phút / giờ; . [45]

Dù sao, trong hầu hết các trường hợp, những loại bộ đệm đó được thực hiện bởi các máy chủ bên ngoài [e. g. proxy ngược] hoặc bằng cách lưu trữ đầu ra dữ liệu động trong các máy tính riêng biệt, được quản lý bởi các ứng dụng cụ thể [e. g. memcached], để không cạnh tranh tài nguyên phần cứng [CPU, RAM, ổ đĩa] với [các] máy chủ web. [46] [47]

Máy chủ web chế độ hạt nhân và chế độ người dùng[sửa | sửa mã nguồn]

Phần mềm máy chủ web có thể được tích hợp vào HĐH và được thực thi trong không gian nhân hoặc có thể được thực thi trong không gian người dùng [giống như các ứng dụng thông thường khác]

Các máy chủ web chạy ở chế độ nhân [thường được gọi là máy chủ web không gian nhân] có thể có quyền truy cập trực tiếp vào tài nguyên nhân và do đó, về lý thuyết, chúng có thể nhanh hơn các máy chủ chạy ở chế độ người dùng; . g. khó khăn trong việc phát triển [gỡ lỗi] phần mềm trong khi các lỗi nghiêm trọng trong thời gian chạy có thể dẫn đến các sự cố nghiêm trọng trong nhân hệ điều hành

Các máy chủ web chạy ở chế độ người dùng phải yêu cầu hệ thống cho phép sử dụng nhiều bộ nhớ hơn hoặc nhiều tài nguyên CPU hơn. Các yêu cầu này không chỉ mất thời gian mà còn có thể không phải lúc nào cũng được thỏa mãn vì hệ thống dự trữ tài nguyên cho việc sử dụng của chính nó và có trách nhiệm chia sẻ tài nguyên phần cứng với tất cả các ứng dụng đang chạy khác. Thực thi trong chế độ người dùng cũng có nghĩa là sử dụng nhiều bản sao bộ đệm/dữ liệu hơn [giữa không gian người dùng và không gian nhân] có thể dẫn đến giảm hiệu suất của máy chủ web ở chế độ người dùng

Ngày nay, hầu hết tất cả phần mềm máy chủ web đều được thực thi ở chế độ người dùng [vì nhiều nhược điểm nhỏ nói trên đã được khắc phục bằng phần cứng nhanh hơn, phiên bản HĐH mới, lệnh gọi hệ điều hành nhanh hơn nhiều và phần mềm máy chủ web mới được tối ưu hóa]. Xem thêm so sánh phần mềm máy chủ web để khám phá phần mềm nào chạy ở chế độ nhân hoặc ở chế độ người dùng [còn được gọi là không gian nhân hoặc không gian người dùng]

Biểu diễn [ chỉnh sửa ]

Để cải thiện trải nghiệm người dùng [về phía máy khách/trình duyệt], máy chủ web phải trả lời nhanh chóng [càng sớm càng tốt] các yêu cầu của máy khách; . g. tệp lớn hoặc rất lớn], nội dung dữ liệu trả về cũng phải được gửi càng nhanh càng tốt [tốc độ truyền cao]

Nói cách khác, máy chủ web phải luôn phản hồi nhanh, ngay cả khi lưu lượng truy cập web cao, để giữ cho tổng thời gian chờ đợi của người dùng [tổng thời gian trình duyệt + thời gian mạng + thời gian phản hồi của máy chủ web] để có phản hồi thấp nhất có thể

Chỉ số hiệu suất[sửa]

Đối với phần mềm máy chủ web, các chỉ số hiệu suất chính [được đo trong các điều kiện hoạt động khác nhau] thường ít nhất là những chỉ số sau [i. e. ]. [48] ​​[49]

  • số lượng yêu cầu mỗi giây [RPS, tương tự như QPS, tùy thuộc vào phiên bản HTTP và cấu hình, loại yêu cầu HTTP và các điều kiện hoạt động khác];
  • số lượng kết nối mỗi giây [CPS], là số lượng kết nối mỗi giây được máy chủ web chấp nhận [hữu ích khi sử dụng HTTP/1. 0 hoặc HTTP/1. 1 với giới hạn yêu cầu/phản hồi trên mỗi kết nối rất thấp, tôi. e. 1. 20];
  • độ trễ mạng + thời gian phản hồi cho mỗi yêu cầu khách hàng mới; . g. trong vòng 1ms, 3ms, 5ms, 10ms, 20ms, 30ms, 40ms] và/hoặc thời gian đáp ứng ngắn nhất, trung bình và dài nhất;
  • thông lượng phản hồi, tính bằng byte trên giây

Trong số các điều kiện hoạt động, số [1. n] của các kết nối máy khách đồng thời được sử dụng trong quá trình kiểm tra là một tham số quan trọng vì nó cho phép tương quan mức độ đồng thời được hỗ trợ bởi máy chủ web với kết quả của các chỉ số hiệu suất được kiểm tra

Hiệu quả phần mềm[sửa | sửa mã nguồn]

Thiết kế và mô hình phần mềm máy chủ web cụ thể được thông qua [e. g. ]

và các kỹ thuật lập trình khác, chẳng hạn như [e. g. ]

được sử dụng để triển khai chương trình máy chủ web, có thể làm sai lệch rất nhiều hiệu suất và đặc biệt là mức độ khả năng mở rộng có thể đạt được khi tải nặng hoặc khi sử dụng phần cứng cao cấp [nhiều CPU, đĩa và nhiều RAM]

Trong thực tế, một số mô hình phần mềm máy chủ web có thể yêu cầu nhiều tài nguyên hệ điều hành hơn [đặc biệt là nhiều CPU và nhiều RAM hơn] để có thể hoạt động tốt và do đó để đạt được hiệu suất mục tiêu

Điều kiện hoạt động[sửa | sửa mã nguồn]

Có nhiều điều kiện hoạt động có thể ảnh hưởng đến hiệu suất của máy chủ web; . e. ]

  • cài đặt của máy chủ web [bao gồm cả việc tệp nhật ký có được bật hoặc không được bật, v.v. ];
  • phiên bản HTTP được sử dụng bởi các yêu cầu của khách hàng;
  • loại yêu cầu HTTP trung bình [phương thức, độ dài của tiêu đề HTTP và phần thân tùy chọn];
  • nội dung được yêu cầu là tĩnh hay động;
  • nội dung có được lưu trong bộ nhớ cache hay không được lưu trong bộ nhớ cache [bởi máy chủ và/hoặc bởi máy khách];
  • liệu nội dung có được nén nhanh [khi được chuyển], được nén trước [i. e. khi tài nguyên tệp được lưu trữ trên đĩa đã được nén để máy chủ web có thể gửi tệp đó trực tiếp tới mạng với dấu hiệu duy nhất là nội dung của nó được nén] hoặc hoàn toàn không được nén;
  • liệu các kết nối có được mã hóa hay không;
  • tốc độ mạng trung bình giữa máy chủ web và máy khách của nó;
  • số lượng kết nối TCP đang hoạt động;
  • số lượng quy trình đang hoạt động được quản lý bởi máy chủ web [bao gồm các chương trình CGI, SCGI, FCGI bên ngoài];
  • các giới hạn hoặc cài đặt phần cứng và phần mềm của HĐH của [các] máy tính mà máy chủ web chạy trên đó;
  • điều kiện nhỏ khác

Điểm chuẩn[sửa]

Hiệu suất của máy chủ web thường được đo điểm chuẩn bằng cách sử dụng một hoặc nhiều công cụ kiểm tra tải tự động có sẵn

Giới hạn tải[sửa]

Một máy chủ web [cài đặt chương trình] thường có giới hạn tải được xác định trước cho từng tổ hợp điều kiện hoạt động, cũng bởi vì nó bị giới hạn bởi tài nguyên HĐH và vì nó chỉ có thể xử lý một số lượng hạn chế kết nối máy khách đồng thời [thường là từ 2 đến vài chục

Khi một máy chủ web gần hoặc vượt quá giới hạn tải của nó, nó sẽ bị quá tải và do đó có thể không phản hồi

Nguyên nhân quá tải[sửa]

Bất cứ lúc nào máy chủ web cũng có thể bị quá tải do một hoặc nhiều nguyên nhân sau [e. g. ]

  • Vượt quá lưu lượng truy cập web hợp pháp. Hàng nghìn, thậm chí hàng triệu khách hàng kết nối với website trong một khoảng thời gian ngắn, đ. g. , hiệu ứng dấu gạch chéo
  • Tấn công từ chối dịch vụ phân tán. Một cuộc tấn công từ chối dịch vụ [tấn công DoS] hoặc tấn công từ chối dịch vụ phân tán [tấn công DDoS] là một nỗ lực nhằm làm cho máy tính hoặc tài nguyên mạng không khả dụng đối với người dùng dự kiến
  • Sâu máy tính đôi khi gây ra lưu lượng truy cập bất thường do hàng triệu máy tính bị nhiễm [không được phối hợp giữa chúng]
  • Sâu XSS có thể gây ra lưu lượng truy cập cao do hàng triệu trình duyệt hoặc máy chủ web bị nhiễm
  • Bot Internet Lưu lượng truy cập không được lọc/giới hạn trên các trang web lớn với rất ít tài nguyên mạng [e. g. băng thông] và/hoặc tài nguyên phần cứng [CPU, RAM, đĩa]
  • Internet [mạng] chậm lại [e. g. do mất gói] để các yêu cầu của khách hàng được phục vụ chậm hơn và số lượng kết nối tăng lên nhiều đến mức đạt đến giới hạn của máy chủ
  • Máy chủ web, phục vụ nội dung động, chờ phản hồi chậm đến từ [các] máy tính phụ trợ [e. g. cơ sở dữ liệu], có thể do có quá nhiều truy vấn xen lẫn với quá nhiều lần chèn hoặc cập nhật dữ liệu cơ sở dữ liệu;
  • Máy chủ web [máy tính] không khả dụng một phần. Điều này có thể xảy ra do bảo trì hoặc nâng cấp bắt buộc hoặc khẩn cấp, lỗi phần cứng hoặc phần mềm chẳng hạn như back-end [e. g. cơ sở dữ liệu] lỗi;

Các triệu chứng quá tải[sửa]

Các triệu chứng của máy chủ web quá tải thường là những triệu chứng sau [e. g. ]

  • Yêu cầu được phục vụ với độ trễ [có thể dài] [từ 1 giây đến vài trăm giây]
  • Máy chủ web trả về mã lỗi HTTP, chẳng hạn như 500, 502,[50][51] 503,[52] 504,[53] 408 hoặc thậm chí là 404 không liên tục
  • Máy chủ web từ chối hoặc đặt lại [ngắt] kết nối TCP trước khi trả về bất kỳ nội dung nào
  • Trong những trường hợp rất hiếm, máy chủ web chỉ trả về một phần nội dung được yêu cầu. Hành vi này có thể được coi là một lỗi, ngay cả khi nó thường phát sinh như một triệu chứng của tình trạng quá tải

Kỹ thuật chống quá tải[sửa]

Để khắc phục một phần giới hạn tải trên trung bình và để tránh quá tải, hầu hết các trang web phổ biến đều sử dụng các kỹ thuật phổ biến như sau [e. g. ]

  • Điều chỉnh các thông số hệ điều hành cho khả năng và cách sử dụng phần cứng
  • Điều chỉnh [các] thông số máy chủ web để cải thiện tính bảo mật và hiệu suất của chúng
  • Triển khai các kỹ thuật bộ đệm web [không chỉ đối với nội dung tĩnh mà còn đối với nội dung động bất cứ khi nào có thể]
  • Quản lý lưu lượng mạng, bằng cách sử dụng
    • Tường lửa để chặn lưu lượng truy cập không mong muốn đến từ các nguồn IP xấu hoặc có mẫu xấu;
    • Trình quản lý lưu lượng HTTP để loại bỏ, chuyển hướng hoặc viết lại các yêu cầu có mẫu HTTP xấu;
    • Quản lý băng thông và định hình lưu lượng, để làm dịu các đỉnh sử dụng mạng
  • Sử dụng các tên miền, địa chỉ IP và máy tính khác nhau để phục vụ các loại nội dung khác nhau [tĩnh và động]; . g
    • //www.example.com/directory1/directory2/
      
      5
    • //www.example.com/directory1/directory2/
      
      6
    • //www.example.com/directory1/directory2/
      
      7
  • Sử dụng nhiều máy chủ web [máy tính] được nhóm lại với nhau phía sau bộ cân bằng tải để chúng hoạt động hoặc được xem như một máy chủ web lớn
  • Thêm nhiều tài nguyên phần cứng hơn [i. e. RAM, đĩa nhanh] cho mỗi máy tính
  • Sử dụng các chương trình máy tính hiệu quả hơn cho máy chủ web [xem thêm. hiệu quả phần mềm]
  • Sử dụng Giao diện cổng máy chủ web hiệu quả nhất để xử lý các yêu cầu động [sinh ra một hoặc nhiều chương trình bên ngoài mỗi khi một trang động được truy xuất, làm giảm hiệu suất]
  • Sử dụng các kỹ thuật lập trình và giải pháp thay thế khác, đặc biệt nếu có liên quan đến nội dung động, để tăng tốc độ phản hồi HTTP [i. e. bằng cách tránh các lệnh gọi động để truy xuất các đối tượng, chẳng hạn như biểu định kiểu, hình ảnh và tập lệnh], không bao giờ thay đổi hoặc rất hiếm khi thay đổi, bằng cách sao chép nội dung đó vào tệp tĩnh một lần rồi giữ chúng được đồng bộ hóa với nội dung động]
  • Sử dụng các phiên bản HTTP hiệu quả mới nhất [e. g. ngoài việc sử dụng HTTP/1 phổ biến. 1 cũng bằng cách bật HTTP/2 và có thể cả HTTP/3, bất cứ khi nào phần mềm máy chủ web có sẵn hỗ trợ đáng tin cậy cho hai giao thức sau] để giảm rất nhiều số lượng kết nối TCP/IP được bắt đầu bởi mỗi máy khách và kích thước của dữ liệu

Lưu ý về việc sử dụng giao thức HTTP/2 và HTTP/3

Ngay cả khi các giao thức HTTP [2 và 3] mới hơn thường tạo ra ít lưu lượng mạng hơn cho mỗi dữ liệu yêu cầu/phản hồi, chúng có thể yêu cầu nhiều tài nguyên hệ điều hành hơn [i. e. RAM và CPU] được sử dụng bởi phần mềm máy chủ web [vì dữ liệu được mã hóa, nhiều bộ đệm luồng và các chi tiết triển khai khác]; . 1 kết nối TCP/IP có thể dẫn đến kết quả tốt hơn / tốc độ tải lên cao hơn [số dặm của bạn có thể thay đổi]. [54][55]

Biểu đồ.
Thị phần của tất cả các trang web cho hầu hết các máy chủ web phổ biến 2005–2021

Biểu đồ.
Thị phần của tất cả các trang web cho hầu hết các máy chủ web phổ biến 1995–2005

Dưới đây là thống kê mới nhất về thị phần của tất cả các trang web của các máy chủ web hàng đầu trên Internet do Netcraft cung cấp

máy chủ web. Thị phần của tất cả các trang webDatenginx [Nginx, Inc. ]Apache [ASF]OpenResty [OpenResty Software Foundation]Máy chủ Cloudflare [Cloudflare, Inc. ]IIS [Microsoft]GWS [Google]KhácTháng 10 năm 2021[56]34. 95%24. 63%6. 45%4. 87%4. 00% [*]4. 00% [*]Dưới 22%Tháng 2 năm 2021[57]34. 54%26. 32%6. 36%5. 0%6. 5%3. 90%Dưới 18%Tháng 2 năm 2020[58]36. 48%24. 5%4. 00%3. 0%14. 21%3. 18%Nhỏ hơn 15 %Tháng 2 năm 2019[59]25. 34%26. 16%N/AN/A28. 42%1. 66%Dưới 19%Tháng 2 năm 2018[60]24. 32%27. 45%N/AN/A34. 50%1. 20%Dưới 13%Tháng 2 năm 2017[61]19. 42%20. 89%N/AN/A43. 16%1. 03%Dưới 15%Tháng 2 năm 2016[62]16. 61%32. 80%N/AN/A29. 83%2. 21%Ít hơn 19%

GHI CHÚ. [*] tỷ lệ phần trăm được làm tròn thành số nguyên, vì giá trị thập phân của nó không được báo cáo công khai bởi trang nguồn [chỉ giá trị được làm tròn của nó được báo cáo trong biểu đồ]

Xem thêm [sửa]

Giao diện cổng máy chủ web tiêu chuẩn được sử dụng cho nội dung động

  • Giao diện cổng chung CGI
  • Giao diện cổng chung đơn giản SCGI
  • Giao diện cổng chung nhanh FastCGI

Một vài Giao diện Máy chủ Web khác [máy chủ hoặc ngôn ngữ lập trình cụ thể] được sử dụng cho nội dung động

Công cụ lập kế hoạch liệt kê hoặc hiển thị tất cả các trang trên một trang web và cho biết chúng có liên quan với nhau như thế nào?

Sơ đồ trang web. Sơ đồ trang web [hoặc sơ đồ trang web] là danh sách các trang của trang web mà trình thu thập dữ liệu hoặc người dùng có thể truy cập. Nó có thể là một tài liệu dưới bất kỳ hình thức nào được sử dụng làm công cụ lập kế hoạch cho thiết kế Web hoặc một trang Web liệt kê các trang trên một trang Web, thường được tổ chức theo kiểu phân cấp.

Là một chương trình diễn giải và hiển thị các trang Web để người dùng có thể xem và tương tác với một trang web?

Trình duyệt Web , còn được gọi là trình duyệt, là một chương trình thông dịch và hiển thị các trang Web, đồng thời cho phép bạn xem và tương tác với một trang Web. thống kê trình duyệt. Bộ định vị tài nguyên thống nhất [URL] là địa chỉ của tài liệu hoặc tệp khác có thể truy cập trên Internet.

Bộ sưu tập các trang Web có liên quan được tạo và duy trì bởi một tổ chức giáo dục của một công ty cá nhân hoặc tổ chức khác là gì?

Trang web là tập hợp các trang Web được liên kết với nhau, có thể truy cập công khai, chia sẻ một tên miền duy nhất. Các trang web có thể được tạo và duy trì bởi một cá nhân, nhóm, doanh nghiệp hoặc tổ chức để phục vụ nhiều mục đích khác nhau. Cùng với nhau, tất cả các trang web có thể truy cập công cộng tạo thành World Wide Web.

Cái gì giám sát kết nối mạng giữa nguồn dữ liệu và đích và quản lý vi mô dữ liệu?

TCP giám sát kết nối mạng giữa nguồn dữ liệu và đích và quản lý vi mô dữ liệu. Khi dữ liệu được gửi qua Internet, TCP sẽ chia dữ liệu thành các gói. Mỗi gói chứa thông tin địa chỉ mà IP quản lý.

Chủ Đề