Tomcat
httpd 後面的 Tomcat,帶有 Let’s Encrypt 和 Certbot——我的 VirtualHost 對嗎?
(我希望)解決了我在 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 info@frobozz.com <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 info@frobozz.com <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”。