Proxy Virtualhost của Apache với thư mục con


13

Hiện tại, chúng tôi có một máy chủ IIS là máy chủ web chính của chúng tôi. Chúng tôi đang triển khai một máy chủ Apache ở vị trí của nó, nhưng vẫn cần phải có máy chủ IIS có thể truy cập được. Thông thường, đây là một điều đơn giản, vì Apache2 có thể ủy quyền một tên miền phụ cho máy chủ này.

Tuy nhiên, vấn đề của chúng tôi là: chúng tôi đang sử dụng dotnetCharting trên máy chủ IIS và việc cấp phép được gắn với tên miền. Để có được dotnetCharting hoạt động, một giấy phép khác sẽ phải được mua.

Câu hỏi của tôi là, Apache2 có thể ủy quyền thư mục con không? Ví dụ: 'www.example.com/subdir' có thể trỏ đến máy chủ IIS không? Có vẻ như điều đó là không thể, nhưng tôi dường như không thể tìm ra giải pháp cho việc này.

Câu trả lời:


19

Chắc chắn rồi. Nhưng hãy cẩn thận; rất nhiều ứng dụng web không được thiết kế tốt để thay đổi đường dẫn URL của chúng. Là ứng dụng được sử dụng trong một thư mục con hiện nay?

# You'll probably want this to maintain the host mapping in IIS
ProxyPreserveHost On
# Swap in the IP address or internal host name of your IIS server:
ProxyPass /subdir/ http://192.0.2.100/subdir/

Hoặc, nếu bạn đang thay đổi đường dẫn URL, hãy nhớ rằng rất nhiều ứng dụng sẽ gặp vấn đề với điều này, do các đường dẫn tuyệt đối cho tài nguyên (CSS, javascript, hình ảnh):

ProxyPass /subdir/ http://192.0.2.100/
ProxyPassReverse /subdir/ http://192.0.2.100/

Hoàn hảo! Điều đó đã tạo ra mánh khóe trong môi trường thử nghiệm của tôi. Ngay bây giờ, bên trong, bạn có thể nhập địa chỉ IP của máy chủ và sử dụng proxy nội bộ của chúng tôi để đến máy chủ và mọi thứ (ngoại trừ dotnetcharting) đều hoạt động hoàn hảo, vì vậy tôi không hy vọng ứng dụng bị lỗi khi chúng tôi ủy quyền bằng phương pháp này. Nhiều đánh giá cao!
SuperJer

1
Tôi đã phải rời khỏi dấu vết /từ subdir(như thế này /subdir:). Nếu không, nếu domain.com/subdirkết quả là một lỗi ứng dụng (500). Nó sẽ ủy quyền chính xác nếu dấu gạch chéo được bao gồm ( domain.com/subdir/), nhưng đó không phải là hiệu ứng tôi đang tìm kiếm.
OneHoopyFrood

3

Chắc chắn rồi.

  1. Kích hoạt mod_proxy mod_proxy_http
  2. đặt hướng dẫn sau trong Apache Vhost của bạn

    ProxyPass /subdir http://iis.server/.../
    ProxyPassReverse /subdir http://iis.server/.../
    

Lưu ý "/" cuối cùng là bắt buộc.

Để biết thêm thông tin: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html


0

dấu gạch chéo cuối cùng là KHÔNG bắt buộc. Tôi đã thiết lập nó như thế này

ProxyPass /dir http://exmpale.com/dir/ 

ProxyPassReverse /dir http://exmpale.com/dir/ 

và cấp cao nhất đã làm việc nhưng việc truyền tải trong các thư mục con bên dưới cấp chính thì không.

Tôi đã thay đổi nó để điều này và mọi thứ đã làm việc.

Cảm ơn thông tin sai lệch !!!

ProxyPass /dir http://exmpale.com/dir

ProxyPassReverse /dir http://exmpale.com/dir

1
Tại sao mọi người downvote này? Đó chính xác là vấn đề tôi gặp phải. Bạn cần phải hoặc là kết thúc cả các url với một dấu gạch chéo hoặc để lại cả các url mà không có một dấu gạch chéo .... ít nhất đối với tôi nó giúp khi nó đến thư mục con;)
Jannik
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.