在 OS X Yosemite 上使用 Apache 2.4。需要修改此虚拟主机,以便重定向http://server.kibana
并http://www.server.kibana
https://server.kibana
这是 Vhost:
<VirtualHost *:8443>
ServerName www.server.kibana
ServerAlias server.kibana
ServerAdmin [email protected]
# RedirectPermanent http://server.kibana https://server.kibana
# DocumentRoot /usr/local/var/www/kibana-4.0.2-darwin-x64/src/public
SSLEngine on
SSLCertificateFile "/usr/local/etc/apache2/2.4/ssl-keys/server.crt"
SSLCertificateKeyFile "/usr/local/etc/apache2/2.4/ssl-keys/server.key"
#
# Proxy
#
ProxyRequests Off
<Proxy *>
Order Allow,Deny
Allow from all
AuthType Basic
AuthName "Authenticated proxy"
AuthUserFile /usr/local/etc/apache2/2.4/elastic.htpwd
Require valid-user
</Proxy>
ProxyPass / http://127.0.0.1:5601
ProxyPassReverse / http://127.0.0.1:5601
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://127.0.0.1:5601%{REQUEST_URI} [P,QSA]
ErrorLog /usr/local/var/log/apache2/kibana_error.log
LogLevel warn
CustomLog /usr/local/var/log/apache2/kibana_access.log combined
</VirtualHost>
有什么建议可以添加什么或如何修改 RewriteRule 和 RewriteCond 吗?谢谢!
答案1
您可以使用它,并重写为您的证书颁发给的域:
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*) https://www.example.com$1 [R=301,L]
或者在您想要强制实施 SSL 的地方使用此包含文件,同时启用对服务器部分内容的 HTTP 访问。
# Script to require SSL
<If "%{HTTPS} == 'on'">
SSLOptions +StrictRequire
SSLRequireSSL
</If>
<Else>
RedirectMatch permanent ^/?(.*) https://www.example.com/$1
</Else>
您可以使用%{SERVER_NAME}
而不是www.example.com
。这适用于普通证书。
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R=301,L]
变量%{HTTP_HOST}
包含请求中的主机名,可以代替www.exaxmple.com
。但是,这可能不是与证书匹配的主机名。它适用于多域证书。
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*) https://%{HOST_NAME}$1 [R=301,L]
添加UseCanonicalName dns
到您的配置UseCanonicalName dns
将提供SERVER_NAME
来自 DNS 的信息。但是,您需要确保 DNS 提供所需的域。如果此操作成功,您可能能够对所有服务器使用相同的配置。或者,您可以包含一个特定于服务器的小型文件来提供服务器名称。
您确实需要监听 HTTP 和 HTTPS 的不同端口。在启用重写之前,请先测试每个端口。这是用于监听 HTTP 和 HTTPS 并将所有请求重定向到 HTTPS 的站点的最低配置。如果使用非标准端口,则重定向将需要一个端口。此配置依赖于在虚拟主机定义之外配置的目录访问。
<VirtualHost *:80 *:443>
ServerAdmin [email protected]
DocumentRoot /var/www/
ServerName www.example.com
ServerAlias example.com
SSLEngine On
SSLCipherSuite HIGH:MEDIUM
SSLCertificateFile /etc/ssl/certs/www.example.com-cert.pem
SSLCertificateKeyFile /etc/ssl/private/www.example.com-key.pem
SSLCACertificatePath /etc/ssl/certs/
RewriteEngine On
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R=301,L]
</VirtualHost>
答案2
尝试在“RewriteEngine on”下面添加此代码,看看是否有效。
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://server.kibana/$1 [R=301,L]