Я размещаю несколько экземпляров одного и того же приложения ruby on rails через пассажира на сервере Apache. В прошлом эти приложения были доступны через отдельные домены. Но теперь я получил домен и несколько отделений от нашего ИТ-отдела, и мне нужно обслуживать приложения следующим образом:
domain.example.de/app_one
domain.example.de/app_two
....
Хотя это прекрасно работает без Let's-encrypt (просто нужно настроить таким образом apache и ruby on rails-приложения). Я хочу, чтобы страницы доставлялись через https (Let's-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
В нем не указаны новые «ServerNames», для которых нужно выдавать сертификаты. Если я вызываю certbot с флагом «-d» и вручную указываю «ServerName», я получаю сообщение об ошибке, что имя домена содержит недопустимые символы.
Можно ли таким образом выдать сертификат для каждого приложения? Или мне нужно выпустить один для домена и использовать его для каждого приложения в этом домене?
http://domain.example.de/app_one
не является действительным доменным именем. Доменная часть этого domain.example.de
. Это то, что вы должны использовать в ServerName
директива и в certbot. Все остальное настраивается в другом месте.
/app_one
можно настроить в <Location>
блокировать или как обратный прокси, http://
уже подразумевается :80
участие в вашем <VirtualHost>
Что касается certbot, то --apache
параметр только указывает ему использовать Apache для обработки проверки. Вам по-прежнему необходимо предоставить домену -d
параметр.