Tôi đang cố gắng thiết lập hai tên miền phụ, cho một
và b
Trong tên miền.com
. Tôi sử dụng hai tệp .conf, trông khá giống với các thay đổi đối với ServerName và ProxyPass:
<VirtualHost *:80>
ServerName a.domain.com #This was added as a try for a fix.
Redirect permanent / https://a.domain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName a.domain.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/a
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#SSL stuff
#Proxies
ProxyPass / https://a.domain.com:8444/
ProxyPassReverse / https://a.domain.com:8444/
ProxyPass /a/ https://a.domain.com:8444/
ProxyPassReverse /a/ https://a.domain.com:8444/
ProxyPass /b/ https://b.domain.com:8445/
ProxyPassReverse /b/ https://b.domain.com:8445/
</VirtualHost>
Điều này đang được thực hiện trong môi trường thử nghiệm của tôi, sao chép thứ gì đó tương tự như thứ hiện đang được sản xuất. Trong/etc/hosts, tôi đã thêm a.domain.com
và b.domain.com
đến 127.0.0.1. DNS trong sản xuất có bản ghi cho những gì a.domain.com
và b.domain.com
là cùng một IP (tôi cũng đã làm điều này trong máy mà tôi đang thử nghiệm cái này).
Cũng lưu ý rằng tôi không phục vụ bất kỳ nội dung nào từ thư mục gốc của họ. Tôi đã thêm rằng cố gắng khắc phục sự cố được nêu trong tiêu đề. Có một html đơn giản trong cả hai thư mục.
Vấn đề thực tế là gì?
Đơn giản, khi cố gắng a.domain.com
, kết quả là ứng dụng web từ máy chủ cục bộ:8444
, như mong đợi. Khi cố gắng b.domain.com
, kết quả cũng là máy chủ cục bộ:8444
, thay vì máy chủ cục bộ:8445
. Cả hai a.conf
và b.conf
được bật và nếu tôi tắt a.conf
, sau đó tôi nhận được chính xác máy chủ cục bộ:8445
. Nếu tôi cũng cố gắng như a.domain.com/b
, chuyển hướng sẽ giải quyết trở lại a.domain.com
.
Tôi đã đọc một số câu hỏi và hướng dẫn, và hầu hết chúng đều có thứ gì đó hoạt động như trong cấu hình của tôi hoặc thêm NameVirtualHost, mà tôi hiểu là không cần thiết cho phiên bản Apache của tôi.Tôi cũng đã thêm Tên máy chủ vào cổng 80 vì tôi nghĩ rằng có lẽ yêu cầu cho b
đã được phù hợp bởi a.conf
vì chúng có cùng một IP, nhưng điều đó cũng không hiệu quả.
Tôi đang thiếu gì ở đây? Có phải thứ gì đó với mod_proxy mà tôi dường như đang bỏ qua không? Nếu có thể, tôi muốn giữ một tệp cho mỗi ứng dụng web. Cảm ơn!
Đây là trên Ubuntu 18.04.2, Apache 2.4 (mod_proxy và mod_ssl), Tomcat 9. Bất kỳ thông tin nào khác mà bạn muốn, tôi sẽ cố gắng hết sức để cung cấp.
CẬP NHẬT
Đã thử với cấu hình này. Cùng một kết quả không mong muốn.
<VirtualHost *:80>
ServerAlias a.domain.com
Redirect permanent / https://a.domain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName a.domain.com
ServerAdmin webmaster@localhost
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#SSL stuff
#Proxies
Redirect /b https://b.domain.com
<Location />
ProxyPass https://localhost:8444/
ProxyPassReverse https://localhost:8444/
</Location>
<Location /a>
ProxyPass https://localhost:8444/
ProxyPassReverse https://localhost:8444/
</Location>
</VirtualHost>
CẬP NHẬT
Ok, tôi chỉ tìm thấy một cái gì đó rất khó chịu. Nếu tôi nhập bằng trình duyệt của mình vào một trong hai a.domain.com
hoặc b.domain.com
, cả hai quyết tâm a.domain.com
. Đó là vấn đề tôi mô tả ban đầu. NHƯNG nếu cố gắng https://a.domain.com
hoặc https://b.domain.com
, cả hai đều phân giải đến đúng máy chủ: một
đến 8444
và b
đến 8445
.
Vì điều này rất khó chịu, tôi sẽ dừng lại và phân tích điều này sau một thời gian.
CẬP NHẬT
Sau một thời gian dài kìm hãm, tôi đã thử một số điều chỉnh ngẫu nhiên khác chỉ để xem điều gì đã xảy ra và một lần nữa không có gì hoạt động như mong đợi, ngoại trừ khi sử dụng HTTPS. Tôi đã cài đặt Postman để xem những gì được gửi trong yêu cầu và phát hiện ra rằng trong Postman, cả HTTP và HTTPS đều sử dụng Máy chủ chính xác. Thậm chí tốt hơn/tệ hơn: Phản hồi thực tế hiển thị các trang chào mừng khác nhau cho a.domain.com
và b.domain.com
, nghĩa là các cấu hình của tôi đang hoạt động bình thường khi tôi sử dụng Postman.
Tôi nghĩ rằng tất cả thử thách này có thể chỉ là sự cố bộ đệm, nhưng trình duyệt thử nghiệm mà tôi lựa chọn (Firefox dev ed) được đặt thành không lưu nội dung vào bộ đệm. Tôi sẽ kiểm tra phản hồi bằng curl và các trình duyệt khác của tôi.