Cổng chuyển hướng cho Tomcat là gì?


13

Thật khó để hiểu được tài liệu tomcat và nhìn vào server.xml bạn sẽ tìm thấy một chuỗi các cổng có thể khó hiểu vì nó không thực sự được giải thích chính xác, hoặc rộng rãi, trong tài liệu.

Ví dụ: dòng này trong tệp cấu hình server.xml

<Connector port="8345" protocol="AJP/1.3" redirectPort="9875" />

Và ở đây bạn có thể tìm thấy một cổng chuyển hướng khác:

<Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" /> 

Tôi hiểu những gì cổng kết nối làm. Trong trường hợp đầu tiên, bạn sử dụng điều đó để tạo một worker trong apache và gửi nó đến đó, trong lần thứ hai bạn mở một cổng để truy cập trực tiếp tomcat. Tuy nhiên, khi nói đến redirectport, mọi thứ trở nên mờ nhạt.

Dưới đây là lời giải thích được đưa ra bởi tài liệu tomcat cho cổng ajp:

Nếu Trình kết nối này hỗ trợ các yêu cầu không phải SSL và nhận được yêu cầu phù hợp với yêu cầu vận chuyển SSL, Catalina sẽ tự động chuyển hướng yêu cầu đến số cổng được chỉ định tại đây.

Tôi luôn chọn một cổng chuyển hướng ngẫu nhiên trên 1024 và nó hoạt động,

Nhưng khi nào thì điều này sẽ đi vào thực tế? Làm thế nào để biết khi nào một yêu cầu yêu cầu vận chuyển SSL?

Tôi có một máy chủ vệ tinh chạy một mô-đun tomcat. Mô-đun này có hiệu lực bằng cách chuyển hướng lưu lượng truy cập đến trình kết nối ajp với apache từ máy chủ chính và ngược lại.

Trong máy chủ chính https được thi hành trong apache. Điều này có nghĩa là tất cả các yêu cầu được gửi đến máy chủ vệ tinh được mã hóa hoặc bằng văn bản thuần túy? Tôi biết rằng nếu tôi truy cập máy chủ vệ tinh qua cổng 8080 thì nó không được mã hóa, nhưng tôi tự hỏi liệu điều này có áp dụng cho lưu lượng được chuyển hướng đến máy chủ chính hay không và cổng chuyển hướng này có hiệu lực ở đâu.

Câu trả lời:


5

Vì nó được định nghĩa trong tài liệu, cổng chuyển hướng sẽ xuất hiện khi yêu cầu SSL sẽ đến máy chủ và vì cổng kết nối http không thể xử lý các yêu cầu SSL, nó sẽ chuyển hướng đến cổng được xác định. Nhưng chúng phải là một phần khác được định nghĩa trong tệp server.xml, trong đó cổng chuyển hướng được xác định sẽ hoạt động như một cổng kết nối để xử lý các yêu cầu SSL. Ví dụ: Nếu bạn muốn các yêu cầu http được xử lý bởi cổng 80 và yêu cầu https của cổng 443 thì server.xml sẽ trông như thế này:

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" scheme="https" secure="true" sslProtocol="TLS" keystoreFile="/path/to/kestorefile" keystorePass="my_keystore_password"/>

Keystorefile là chứng chỉ ssl của trang web của bạn.

Nếu bạn không định cấu hình phần khác với cổng chuyển hướng làm cổng kết nối, yêu cầu của bạn sẽ không được chuyển hướng đến cổng đó. Ví dụ: nếu trang web không hỗ trợ các yêu cầu ssl và bạn cố gắng gửi yêu cầu https đến trang web đó thì một lỗi như Bảo mật kết nối không thành công sẽ được hiển thị trên trình duyệt.


Đủ công bằng. Còn cấu hình cho ajp trái ngược với http thì sao? Ngoài ra có nên sử dụng các cổng dưới 1024 như bạn đề cập không? Điều đó có nghĩa là chạy tomcat như root và điều đó không tốt.
Ulukai

1
Tôi không có nhiều ý tưởng về ajp, nhưng chuyển hướng phải hoạt động giống như http. Về việc sử dụng các cổng dưới 1024, nó hoàn toàn phụ thuộc vào bạn. 80 và 443 là các cổng mặc định cho giao thức https & https, không cần đề cập rõ ràng về chúng trong url. Nếu bạn muốn sử dụng các cổng không chuẩn, tùy thuộc vào bạn. Cũng chạy tomcat với root, nó phụ thuộc vào ứng dụng được triển khai. Nếu bạn không tin tưởng ứng dụng của mình với quan điểm bảo mật, bạn không được chạy tomcat với root. Một cách khác là bạn có thể sử dụng apache hoặc nginx làm proxy để chạy trên cổng 80 & 443 và chuyển hướng yêu cầu của bạn đến tomcat.
Gaurav Pundir

Tôi sẽ lưu ý rằng nó iptablescũng hoạt động tốt để chuyển hướng lưu lượng truy cập đến Tomcat, trong số các phương pháp khác .
SeldomNeedy

Lời giải thích này không đầy đủ. Nếu bạn đang chuyển hướng từ không phải SSL sang cổng SSL, thì việc bao gồm trình kết nối đích trong server.xml là không đủ. Cũng cần phải định cấu hình phần <bảo mật-ràng buộc> trong tệp web.xml. Xem stackoverflow.com/questions/9526425/ khăn
luiscolorado
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.