2009-09-08 33 views
13

Tôi đang sử dụng Tomcat 5.5.9 và Apache 2.xLàm thế nào để sử dụng một tên đường dẫn khác nhau trong ProxyPass hơn tên bối cảnh Tomcat

Chúng tôi đang cố gắng sử dụng một tên đường dẫn trong ProxyPass đó là khác nhau hơn Tomcat tên ngữ cảnh.

ProxyPass /path http://localhost:8080/contextname 

Tuy nhiên, điều này không có tác dụng. Khi hai cái này giống nhau thì mọi thứ đều hoạt động tốt.

Hầu hết các ví dụ tôi thấy trên mạng cũng có đường dẫn bằng tên ngữ cảnh Tomcat.

Tôi đang sử dụng "context.xml" trong ngữ cảnh Tomcat và làm KHÔNG có mục "server.xml". Ngoài ra, tôi đang sử dụng đồng bộ httd.conf và KHÔNG sử dụng bất kỳ mục nhập VirtualHost nào.

Mọi trợ giúp đều được đánh giá cao.

Kính trọng,

Diptenu

Trả lời

10

Tôi tin rằng bạn cần cả hai

ProxyPass /path/ http://localhost:8080/contextname/ 
ProxyPassReverse /path/ http://localhost:8080/contextname/ 

Bất kỳ lý do để không sử dụng mod_jk?

+0

Xin chào David, Tôi đã có cả hai lệnh ProxyPass và ProxyPassReverse mặc dù tôi không đề cập đến nó trong thư của mình. Đối với lý do tại sao không sử dụng mod_jk Tôi chỉ cần ẩn cổng tomcat khỏi URL truy cập của người dùng và không có gì khác để mod-proxy dường như đơn giản nhất –

+1

Cố định giải pháp - bạn có thể phải có dấu gạch chéo ở cuối URI. Điều này được sao chép từ các tập tin conf của tôi. –

3
RewriteEngine on 
RewriteRule ^/path$ /path/ [R] 
RewriteRule ^/path/(.*) /contextname/$1 [P] 

ProxyPass /contextname/ protocol://192.168.15.48:8080/contextname/ 
ProxyPassReverse /contextname/ protocol://192.168.15.48:8080/contextname/ 

đâu "giao thức" = "http" trong trường hợp này ...

2

Thêm một dấu gạch chéo để cả hai giá trị:

ProxyPass /path/ http://localhost:8080/contextname/

+0

Bạn có thể giải thích cách điều này khác với phiên bản không-đào tạo-slash? –

+0

nó không giải quyết được vấn đề. –

1

Vấn đề của bạn là URL có thể tự tham chiếu mà ứng dụng tạo ra. Không có nhiều bạn có thể làm gì về nó trừ

  1. thay đổi ứng dụng hoặc
  2. mọi thứ viết lại rằng nó spits ra.

Tùy chọn 2 có thể rất mong manh. Xem the tomcat docs để biết thêm thông tin.

+0

Điều này là tốt đẹp và rõ ràng –

-2

Giả sử tên miền của bạn là bla.com và bạn muốn proxy bla.com/path thành 8080/contextname.

Nếu bạn sử dụng dữ liệu sau rồi cuối cùng bạn nhận được một chuyển hướng để contextname

ProxyPass /path http://localhost:8080/contextname 
ProxyPassReverse /path http://localhost:8080/contextname 

Kết quả: bla.com/contextname (Chuyển trong các bản ghi apache)

Để có được kết quả mong muốn của bạn, bạn phải bao gồm dấu gạch chéo sau tên ngữ cảnh.

ProxyPass /path http://localhost:8080/contextname/ 
ProxyPassReverse /path http://localhost:8080/contextname/ 

Kết quả: bla.com/path

Một chút muộn nhưng đây là nơi mà google sẽ đưa bạn.

+0

đã cố gắng này ra nhưng nó không hoạt động. – Jakki

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