2009-07-27 15 views
8

Điều tôi đang cố gắng đạt được là: Tôi muốn có nhiều tên miền phụ như abc.domain.com chuyển hướng đến một url chẳng hạn như www.domain.com/something?subdomain=abcThiết lập tên miền phụ Wildcard (với proxy ngược) trên apache 2.2.3

Vì tôi đang chuyển hướng đến một miền đủ điều kiện, tôi cần sử dụng proxy ngược để tránh thay đổi URL trong trình duyệt. (Sử dụng [P] Cờ và bật module mod_proxy và một số module khác)

Đây là thiết lập DNS của tôi

*.domain.com. 14400 A 111.111.11.1 

Đây là cấu hình máy chủ ảo của tôi cho apache

<VirtualHost 111.111.11.1:80> 
    ServerName www.domain.com 
    ServerAlias *.lionite.com 
    DocumentRoot /var/www/html 
    ErrorLog /var/www/logs 
    UseCanonicalName off 

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/images 
RewriteCond %{HTTP_HOST}  !^www\.domain\.com$ 
RewriteRule ^(.+)  %{HTTP_HOST}$1   [C] 
RewriteRule ^([^.]+)\.domain\.com(.*) http://www.domain.com/something?subdomain=$1 [P,L] 

Thiết lập này hoạt động tốt (Hãy cho tôi biết nếu bạn nghĩ rằng bạn có thể cải thiện nó tất nhiên).

vấn đề chính của tôi là khi tôi đang cố gắng để thiết lập https: //

Đây là cấu hình máy chủ ảo của tôi cho apache

<VirtualHost 111.111.11.1:443> 
ServerName www.domain.com:443 
ServerAlias *.domain.com 
DocumentRoot /var/www/html 

SSLEngine on 
SSLProtocol all -SSLv2 
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW 
SSLCertificateFile /etc/httpd/conf.d/cert/server.crt 
SSLCertificateKeyFile /etc/httpd/conf.d/cert/server.key 

<Directory "/var/www/cgi-bin"> 
    SSLOptions +StdEnvVars 
</Directory> 

SetEnvIf User-Agent ".*MSIE.*" \ 
     nokeepalive ssl-unclean-shutdown \ 
     downgrade-1.0 force-response-1.0 

CustomLog logs/ssl_request_log \ 
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" 

    RewriteEngine on 
    RewriteCond %{REQUEST_URI} !^/images 
    RewriteCond %{HTTPS_HOST}  !^www\.domain\.com$ 
    RewriteRule ^(.+)  %{HTTPS_HOST}$1   [C] 
    RewriteRule ^([^.]+)\.domain\.com(.*) https://www.domain.com/something?subdomain=$1 [P,L] 

</VirtualHost> 

Bất cứ khi nào tôi gọi https://abc.domain.com - câu trả lời tôi nhận được là trang chủ nhưng không có vấn đề gì tôi đang thêm vào cuối tên miền phụ, tôi sẽ nhận được phản hồi tương tự. Nó giống như viết lại không đáp ứng tốt.

Bất kỳ trợ giúp sẽ được đánh giá cao, hoặc nếu bạn có thể chia sẻ cách bạn muốn thiết lập đảo ngược proxy, viết lại, subdomain wildcard và SSL tất cả cùng nhau

Cảm ơn,

+0

Câu hỏi này sẽ phù hợp hơn trên serverfault.com –

+0

Tôi đã đăng câu hỏi này trên serverfault.com, khi không nhận được câu trả lời nào, tôi đã quyết định đăng bài ở đây là tốt. –

Trả lời

1

Tôi đã có vấn đề này giống như tốt. Cách duy nhất tôi giải quyết nó là đặt các miền khác nhau cần kết nối an toàn trên các cổng Listen khác nhau vì tôi bị giới hạn với địa chỉ IP.

Từ sự hiểu biết của tôi, vấn đề là trong giao thức https, HOST không được bao gồm trong yêu cầu. Vì vậy, khi yêu cầu đến máy chủ, apache chỉ sử dụng kết hợp đầu tiên trên IP và cổng kết nối đã được nhận bởi vì nó không biết miền được yêu cầu từ đó.

Công việc duy nhất xung quanh việc này là có IP khác nhau cho mỗi miền hoặc một cổng khác.

Thật không may là bạn đã hết may mắn bằng cách sử dụng https với thiết lập tên miền ký tự đại diện, tôi không tin rằng có cách nào để nó hoạt động.

+0

Đang cố gắng làm điều gì đó tương tự và tìm thấy câu trả lời này. Tôi tin rằng nó có thể được thực hiện. Tiêu đề HOST IS được gửi trên mỗi yêu cầu, nhưng nơi này trở thành một prob là w/tên máy chủ ảo dựa trên. Lớp SSL phải được xử lý trước tiên và sau đó apache có thể truy cập vào tiêu đề Máy chủ. Điều này có nghĩa là bạn không thể có các máy chủ ảo dựa trên tên với SSL. Nhưng bạn sẽ có thể làm những gì Adam muốn với các chuyển hướng, vì lớp SSL đã được xử lý và tiêu đề Máy chủ sẽ có sẵn cho các chỉ thị viết lại.Tôi không thấy đề cập đến HTTPS_HOST trong tài liệu, vì vậy có thể sử dụng HTTP_HOST? – kbosak