我正在配置 apache 以创建一个站点,该站点将使用 mod_jk 连接到在 tomcat 上运行的应用程序。
我只希望 https 请求访问我的应用程序,我想使用 mod_rewrite 为端口 80 上的任何 http 请求返回 404。
这是我对 VirtualHost 配置的尝试
<VirtualHost *:80>
ServerName admin.app.com
RewriteEngine On
RewriteRule ^ [L,R=404]
</VirtualHost>
<VirtualHost *:443>
ServerName admin.app.com
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/bla.crt
SSLCertificateKeyFile /etc/apache2/ssl/bla.key
SSLCACertificateFile /etc/apache2/ssl/bla.ca
SSLProtocol all
SSLCipherSuite HIGHT:MEDIUM
JkMount /myapp*
</VirtualHost>
现在点击https://admin.app.com/myapp时一切都很好- 我可以访问我的 tomcat 应用程序,确认 mod_jk 和我的 SSL 证书按预期工作,但是我使用 http 发出的任何 url 请求: // 返回 400 错误请求,而不是我期望的 404。
我添加了 RewriteLog 和 RewriteLogLevel 3 并得到以下输出
(2) init rewrite engine with requested uri /
(3) applying pattern '^' to uri '/'
(2) rewrite '/' -> '[L,R=404]'
(2) local path result: [L,R=404]
(2) init rewrite engine with requested uri /myapp/favicon.ico/
(3) applying pattern '^' to uri '/myapp/favicon.ico/'
(2) rewrite '/myapp/favicon.ico/' -> '[L,R=404]'
(2) local path result: [L,R=404]
我解释为应该返回 404
我的问题是,当日志似乎将我的请求正确地重写为 404 时,为什么我会收到 400 Bad Request,此外,关于只允许通过 https 访问网站的最佳做法是什么。