(我希望)解决了我在 Amazon Linux(“不是 2”)实例上使用相互独立的 httpd 和 Tomcat 服务器的问题后,我现在确实希望 Tomcat 在 Amazon 上现有的、正在运行的 httpd 后面运行已经通过 certbot 获得 Let's Encrypt 证书的 Linux 2 实例。但我最后一次尝试这个时(几个月前,就像我终于和乐高一起工作的那个),我在让它部分功能方面遇到了相当大的麻烦,而且我做的事情严重搞砸了自动更新,直到证书对我们过期,我们才发现。
这是我添加的(实际名称和 IP 地址已编辑)httpd conf 文件,用于为新子域提供虚拟主机。发送到端口 80 的浏览器请求是否被重定向到 https 对我没有影响;重要的部分是(1)Certbot 和 Let's Encrypt 可以看到并做他们需要做的事情,(2)用户可以访问 Tomcat 服务器上的所有 webapp 上下文,包括 ROOT,以及(3)只有指定的 IP 地址才能看到管理器和主机管理器。
有什么明显的我做错了吗?
<VirtualHost *:80>
ServerName xyweb.frobozz.com
DocumentRoot /var/www/html/test
ServerAdmin [email protected]
<Directory /var/www/html/test>
AllowOverride All
</Directory>
# RewriteEngine on
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName xyweb.frobozz.com
DocumentRoot /var/www/html/test
ServerAdmin [email protected]
<Location /manager>
Require ip ww.xx.yy.zz aa.bb.cc.dd ee.ff.gg.hh
</Location>
<Location /host-manager>
Require ip ww.xx.yy.zz aa.bb.cc.dd ee.ff.gg.hh
</location>
ProxyPass "/" "http://127.0.0.1:8080/"
ProxyPassReverse "/" "http://127.0.0.1:8080/"
ProxyRequests Off
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/fizmo.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/fizmo.com/privkey.pem
</VirtualHost>
</IfModule>
显然是这样,因为我今天终于有时间测试它了,它奏效了。
我还了解到,几个月前我的整个愚蠢行为,试图将新的子域添加到所有其他子域使用的现有 Let's Encrypt cert 和 Certbot 配置是一个毫无意义的练习,只会让事情变得更加困难:在 httpd 服务器上拥有自己的虚拟主机的每个子域也可以拥有自己的证书。这也有助于我今天了解“certbot renew --force-renewal”。