Apache2
如何在apache上加密多個虛擬伺服器
我通過 Apache 伺服器上的乘客在 Rails 應用程序上託管了幾個相同的 ruby 實例。過去,這些應用程序是通過單獨的域提供的。但是現在我從我們的 IT 部門收到了一個域和幾個子分支,我必須通過以下方式為應用程序提供服務:
domain.example.de/app_one domain.example.de/app_two ....
雖然這在沒有讓加密的情況下很好地工作(只需要以這種方式配置 apache 和 ruby on rails 應用程序)。我想像以前一樣通過 https (lets-encrypt) 傳遞頁面。我以這種方式配置了 Apache:
<VirtualHost *:80> ServerName http://domain.example.de/app_one # Tell Apache and Passenger where your app's 'public' directory is DocumentRoot /var/www/app_one/public PassengerRuby /usr/local/rvm/gems/ruby-2.3.8/wrappers/ruby # Relax Apache security settings <Directory /var/www/app_one/public> Allow from all Options -MultiViews # Uncomment this if you're on Apache >= 2.4: Require all granted </Directory> RewriteEngine on RewriteCond %{SERVER_NAME} =domain.example.de/app_one RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
但是打電話的時候
sudo certbot --apache
它沒有列出要為其頒發證書的新“伺服器名稱”。如果我使用“-d”標誌呼叫 certbot 並手動提供“ServerName”,則會收到域名包含無效字元的錯誤。
是否可以以這種方式為每個應用程序頒發證書?或者我是否必須為該域發布一個並將其用於該域下的每個應用程序?
http://domain.example.de/app_one
不是有效的域名。其中的域部分是domain.example.de
. 這是您應該在ServerName
指令和 certbot 中使用的內容。其他一切都在其他地方配置。
/app_one
可以在<Location>
塊中配置或作為反向代理配置,您的部分http://
已經暗示了:80``<VirtualHost>
關於 certbot,
--apache
參數只告訴它使用 Apache 來處理驗證。您仍然需要為域提供-d
參數。