Tôi đang chạy hai dịch vụ phía sau máy chủ Apache: Jenkins (Cổng 8080) và SonarQube (Cổng 9000).
Cấu hình apache của tôi trông như thế này:
<VirtualHost *:80>
ServerName server
Redirect permanent / https://server.domain.com/
</VirtualHost>
<VirtualHost *:80>
ServerName server.domain.com
Redirect permanent / https://server.domain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName server.domain.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
ProxyPass /jenkins http://localhost:8080/jenkins nocanon
ProxyPassReverse /jenkins http://localhost:8080/jenkins
ProxyPassReverse /jenkins http://server.domain.com/jenkins
ProxyPassReverse /jenkins https://server.domain.com/jenkins
ProxyPass /sonar http://localhost:9000/sonar nocanon
ProxyPassReverse /sonar http://localhost:9000/sonar
AllowEncodedSlashes NoDecode
ProxyRequests Off
ProxyPreserveHost On
<Proxy http://localhost:8080/*>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
Mọi thứ dường như đang hoạt động tốt, ngoại trừ việc Jenkins đang phàn nàn với thông báo này: Có vẻ như thiết lập proxy ngược của bạn bị hỏng.
Khi tôi chạy thử nghiệm ReverseProxySetupMonitor do Jenkins cung cấp, thông báo lỗi cho biết rằng một cái gì đó với proxy ngược không được thiết lập chính xác, vì nó không thay thế http bằng https:
$ curl -iLk -e https://server.domain.com/jenkins/manage https://server.domain.com/jenkins/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/test
[...]
404 http://server.domain.com/jenkins/manage vs. https://server.domain.com/jenkins/manage
[...]
Điều này chỉ xuất hiện sau khi tôi kích hoạt SSL trên máy chủ (hiện đang sử dụng chứng chỉ tự ký).
Câu hỏi: Làm cách nào để sửa lỗi thiết lập proxy ngược để Jenkins hài lòng? Điểm thưởng cho lời khuyên về cách cải thiện tệp cấu hình apache.
Tôi đã kiểm tra hai câu hỏi liên quan sau đây:
sudo a2enmod headers
, nếu không tôi sẽ nhận đượcInvalid command 'RequestHeader'