Làm cách nào để định cấu hình mod_proxy thành ProxyPass dựa trên http so với https?


9

Tôi có Apache Tomcat chạy với SSL được kích hoạt. Tôi có Máy chủ HTTP Apache hoạt động như một proxy ngược vì vậy nếu người dùng của tôi nhấn http: // myserver / tomcat / thì chúng được chuyển đến http: // myserver: 8080 .

ProxyPass /tomcat/ http://myserver:8080/
ProxyPassReverse /tomcat/ http://myserver:8080/

Tôi cũng có máy chủ HTTP HTTP được định cấu hình cho SSL vì vậy khi người dùng nhấn https: // myserver / tomcat / chúng sẽ được chuyển sang https: // myserver: 8443 / .

Với cấu hình ProxyPass & ProxyPassReverse hiện tại, chúng sẽ được chuyển hướng đến URL không ssl. Làm cách nào tôi có thể thiết lập pass proxy để nó chuyển hướng đến giao thức và cổng khác nhau dựa trên yêu cầu đến?

Đó là, nếu ai đó đến qua HTTPS, làm cách nào tôi có thể chuyển hướng họ đến tomcat của mình @ https: // myserver: 8443 ?


Cập nhật:

@ mike-ins

Tôi đã thử:

NameVirtualHost *:443

<VirtualHost *:80>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

<VirtualHost *:443>
    ProxyPass /tomcat/ https://myserver:8443/
    ProxyPassReverse /tomcat/ https://myserver:8443/
</VirtualHost>

Bây giờ khi tôi truy cập: https: // myserver / tomcat / Tôi nhận được "không tìm thấy trang". Trong nhật ký lỗi tôi thấy "Tệp không tồn tại: / var / apache2 / htdocs / tomcat"

Điều này là chính xác, nhưng tôi dự kiến ​​yêu cầu sẽ được chuyển đến tomcat chạy tại https: // myserver: 8443 / .

Đoán tôi cần phải nhìn nhiều hơn vào các máy chủ ảo, trừ khi có gì đó không ổn.


Tôi không nghĩ rằng bạn cần NameVirtualHostchỉ thị ở đây. Ngoài ra, bạn sẽ cần thêm các chỉ thị thích hợp để bật SSL trong <VirtualHost *:443>phần của mình .
Mike Insch

Câu trả lời:


5

Bạn cần phải làm điều này thông qua hai <VirtualHost *:X>chỉ thị độc lập . HTTPChỉ thị của bạn đi vào bên trong trong <VirtualHost *:80>khi HTTPSchỉ thị của bạn đi vào bên trong <VirtualHost *:443>. Điều chỉnh theo yêu cầu nếu máy chủ của bạn có nhiều máy chủ ảo Dựa trên Địa chỉ hoặc Tên được định cấu hình. Xem tài liệu Apache 2 để biết chi tiết đầy đủ.


Vì vậy, tôi đã thêm vào như sau: NameVirtualhost *: 443
codecraig

3
Đừng quên thêm SSLProxyEngine theo chỉ thị
Ryan

6

Để hoàn thiện: nếu đó là một tùy chọn, bạn nên chấm dứt SSL tại Apache, thay vì Tomcat cũng xử lý nó. Cung cấp Tomcat chỉ có thể truy cập từ Apache, điều này đơn giản hơn và không kém phần an toàn.

Trong thiết lập này, Apache sẽ ủy quyền HTTP và HTTPS để http://myserver:8080/:

NameVirtualHost *:443

<VirtualHost *:80>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

<VirtualHost *:443>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

1
Nếu làm điều này, bạn không cần lặp lại các chỉ thị proxy trong cả Virtualhost. Bạn chỉ có thể kéo chúng ra bối cảnh máy chủ.
Amit N Nikol
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.