Apache ProxyPass với SSL


59

Tôi muốn gửi yêu cầu proxy từ một trang SSL thông qua một trang không phải SSL. Httpd.conf Apache của tôi trông như thế này:

<VirtualHost 1.2.3.4:80>
    ServerName foo.com
    ProxyPass / https://bar.com/
</VirtualHost>

Vì vậy, khi tôi truy cập http://foo.com , tôi mong apache sẽ yêu cầu https://bar.com và gửi cho tôi trang mà nó đã tải.

Thay vào đó, tôi nhận được một lỗi 500 và trong nhật ký lỗi, tôi thấy:

[error] proxy: HTTPS: failed to enable ssl support for 4.3.2.1:443 (bar.com)

Có lẽ tôi đang thiếu một chỉ thị ở đây. Đó có thể là gì?

Đừng bận tâm đến ý nghĩa bảo mật. Tôi hoàn toàn hiểu những rủi ro.


Bạn đang sử dụng phiên bản nào của Apache?
Sam Halicke

1
"Đừng bận tâm đến những tác động an ninh. Tôi hoàn toàn hiểu những rủi ro." - Đây là tín đồ tương đương với "Giữ bia của tôi"; )
Eric Kigathi

Câu trả lời:


70

Bạn sẽ cần mod_ssl, mod_proxyvà tùy chọn mod_rewrite. Tùy thuộc vào bản phân phối và phiên bản Apache của bạn, bạn có thể phải kiểm tra xem mod_proxy_connectmod_proxy_httpcó được tải không.

Các chỉ thị để bật hỗ trợ proxy SSL có trong mod_ssl:

<VirtualHost 1.2.3.4:80>
    ServerName foo.com
    SSLProxyEngine On
    SSLProxyCheckPeerCN on
    SSLProxyCheckPeerExpire on
    ProxyPass / https://secure.bar.com
    ProxyPassReverse / https://secure.bar.com
</VirtualHost>

IIRC bạn cũng có thể sử dụng:

    RewriteRule / https://secure.bar.com [P]    # don't forget to setup SSLProxy* as well

2

Trong Apache 1.x, mod_sslsẽ sửa lỗi ProxyPass. Bạn đã mod_sslcài đặt chưa?

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.