Chuyển tiếp yêu cầu apache (cổng 80) đến Tomcat (cổng 8080)?


8

Tôi muốn chạy một ứng dụng Tomcat thông qua một URL trang web thông thường, chẳng hạn như www.xyz.com. Tôi muốn gốc của tên miền này hoạt động như thư mục cơ sở cho ứng dụng web, vì vậy mỗi yêu cầu www.xyz.com/a/b/csẽ trở thành www.abc.com:8080/myApp/a/b/c. Lý tưởng nhất, tôi sẽ có thể làm điều này một cách minh bạch và chỉ cho một số ứng dụng web nhất định.

www.abc.com:8080 vẫn nên đáp ứng yêu cầu.

Tôi cần làm gì để thực hiện điều này?

Câu trả lời:


14
ProxyPass        / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/

Tìm hiểu thêm về mod_proxy


đây là giải pháp tốt nhất để làm điều này
Mike

1
Để giải quyết phía "chỉ dành cho một số ứng dụng web nhất định", chỉ cần làm cho đường dẫn chuyển hướng sâu hơn. Vì vậy: ProxyPass / a / b / c abc.com:8080/myApp/a/b/c ProxyPassReverse / a / b / c abc.com:8080/myApp/a/b/c Để proxy tất cả ngoại trừ một số đường dẫn nhất định, hãy rời khỏi dòng ProxyPassReverse nhưng thay thế các dòng ProxyPass bằng RewriteRules (đảm bảo sử dụng tùy chọn [P] để ủy quyền thay vì chuyển hướng) và thực hiện các quy tắc trước đó để không ủy quyền các đường dẫn đó. RewriteRule / notproxied - [L] RewriteRule /(.*) abc.com:8080/myApps/$1 [P] ProxyPassReverse / abc.com:8080/myApp
Jeremy M

Tôi thêm những dòng đó vào đâu?
Mina Michael

@MinaMichael Tài liệu mod_proxy nêu rõ: Bối cảnh: cấu hình máy chủ, máy chủ ảo, thư mục
ptman

3

Một phương pháp đơn giản hơn để làm điều này là chỉ cần thêm một mục Máy chủ ảo trong tệp conf Apache của bạn. Thường nằm trong / etc / httpd / conf, thêm một cái gì đó như thế này vào cuối phần Máy chủ ảo:

<VirtualHost X.X.X.X:80>
ServerName tomcatpage.yourdomain.com
ServerAlias tomcatpage.yourdomain.com
Redirect permanent / http://tomcatpage.yourdomain.com:8080/
</VirtualHost>

Khởi động lại dịch vụ Apache của bạn và bạn đã hoàn tất.


3

Bạn có thể sử dụng mod_rewrite trong Apache để làm điều này. Tải mod_rewrite trong Apache của bạn và trong vhost www.xyz.com của bạn thêm quy tắc sau:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1

Điều này sẽ làm điều kỳ diệu.

Thông tin thêm về mod_rewrite tại đây .

EDIT : Để giữ tên trang web trong trình duyệt, hãy sử dụng mod_proxy bằng cách chỉ thêm [P] vào cuối RewriteRule:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]

Điều này sẽ buộc Apache hoạt động như một proxy cho URL đó thay vì chỉ viết lại URL.


Điều này khiến trình duyệt thực sự chuyển hướng. Điều này hoạt động, nhưng tôi thích nếu trang web xuất hiện www.xyz.comtừ phía người dùng.
Stefan Kendall

1
cũng sử dụng mod_proxy và cuối phần RewriteRule nối thêm [P], như thế này: RewriteRule ^ / (. *) abc.com:8080/myApp/$1 [P]. Tôi cũng đã chỉnh sửa câu trả lời ở trên để bao gồm thông tin này.
Marco Ramos
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.