2012-03-20 20 views
13

Tôi đang kế thừa một dự án liên quan đến một ứng dụng web Java có phụ trợ được hỗ trợ bởi một combo Apache httpd/Tomcat. Máy chủ web đang được sử dụng để phân phối lại JS, nội dung tĩnh và để thực hiện cân bằng tải chung, và Tomcat đang phục vụ các JSP trở lại thông qua một tệp WAR duy nhất.Apache httpd và Tomcat hoạt động như thế nào?

Tôi sẽ nhận được quyền truy cập vào cơ sở mã sau này vào ngày hôm nay hoặc ngày mai, nhưng muốn thử và thực hiện một số nghiên cứu trước thời hạn.

Câu hỏi của tôi có thể được tóm tắt là: hai cách này hoạt động cùng nhau như thế nào?

  • Ai là người đầu tiên nhận được yêu cầu HTTP?
  • Làm cách nào để httpd biết khi nào chuyển tiếp các yêu cầu JSP tới Tomcat hoặc chỉ trả lời một yêu cầu?
  • Làm cách nào để httpd "chuyển" yêu cầu đến và "nhận" phản hồi từ, Tomcat? Liệu nó chỉ "sao chép-n-dán" yêu cầu/đáp ứng với một cổng Tomcat đang lắng nghe? Có một số loại thông tin liên lạc cấp hệ điều hành đang diễn ra không? Vv

Đây chỉ là những câu hỏi chung về cách công nghệ cộng tác với nhau. Cảm ơn trước!

+0

Tôi đã đăng một số câu trả lời bên dưới, nhưng tôi cũng sẽ không chi tiêu * quá nhiều thời gian cho các chi tiết cụ thể cho đến khi bạn thấy những gì bạn đang thực sự xem xét. Có lẽ điều tốt nhất là để đọc lên các nguyên tắc chung của proxy ngược và như vậy (liên kết trong câu trả lời). –

Trả lời

18

Ai là người đầu tiên nhận được yêu cầu HTTP?

Apache, gần như chắc chắn. Tuy nhiên, có thể có các quy trình quản trị nói trực tiếp với Tomcat.

Làm thế nào để httpd biết khi nào chuyển tiếp các yêu cầu JSP tới Tomcat hoặc chỉ trả lời yêu cầu?

Từ cấu hình của nó. Các chi tiết cụ thể sẽ khác nhau. Nó có thể, ví dụ, hãy sử dụng mod_jk hoặc mod_jk2, trong trường hợp này bạn sẽ tìm thấy JkMount chỉ thị trong các tập tin cấu hình, ví dụ:

JkMount /*.jsp ajp13_worker 

... mà nói với nó để vượt qua trên các yêu cầu tại thư mục gốc của trang web cho các tệp phù hợp với *.jsp đến ajp13_worker, được xác định trong tệp workers.properties.

Hoặc có thể được thiết lập theo cách sắp xếp HTTP reverse-proxy đơn giản. Hoặc cái gì khác.

Làm thế nào để httpd "chuyển" yêu cầu và "nhận" phản hồi từ, Tomcat?

Nó phụ thuộc vào cấu hình; nó có thể là HTTP, có thể là AJP hoặc có thể sử dụng một số mô-đun khác.

Chỉ cần "sao chép-n-dán" yêu cầu/phản hồi vào cổng Tomcat đang lắng nghe?

Sắp xếp. :-) Xem liên kết ngược proxy ở trên.

Có một số loại giao tiếp liên lạc cấp hệ điều hành đang diễn ra không?

Có. AFAIK, đó là tất cả dựa trên socket (thay vì, nói, chia sẻ bộ nhớ công cụ), có nghĩa là (trong số những thứ khác) mà Tomcat và Apache không cần phải chạy trên cùng một máy.

+0

giả sử yêu cầu HTTP cho nội dung động truy cập Apache. Apache sinh ra một luồng mới, luồng này chuyển nó tới Tomcat, và sau đó giết chết luồng đó (hoặc trả về nó cho nhóm). Khi nhận được yêu cầu HTTP, Tomcat sinh ra một luồng mới để xử lý yêu cầu. Sau đó, phản hồi sẽ chuyển từ Tomcat, sang Apache, tới máy khách. Điều đó có đúng không? –

Các vấn đề liên quan