Apache 在子域上通过本地主机提供服务

Apache 在子域上通过本地主机提供服务

我正在尝试使用 Apache 同时为多个站点提供服务,我想要获得的结构由主站点组成,并example.com使用子域来访问我的 Radarr 和 Sonarr 服务器。radarr.example.comsonarr.example.com

主网站托管于机器1,我使用 apache 和 certbot 设置了一个虚拟主机:

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerName example.com
  
  WSGIDaemonProcess sflasksite user=www-data group=www-data threads=5
  WSGIScriptAlias / /var/www/webapp/app.wsgi

  <Directory /var/www/webapp>
    WSGIProcessGroup sflasksite
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Require all granted
  </Directory>

  Alias /static /var/www/webapp/static

  <Directory /var/www/webapp/static/>
    Order deny,allow
    Require all granted
  </Directory>

  ErrorLog /var/www/webapp/logs/error.log
  CustomLog /var/www/webapp/logs/access.log combined


SSLCertificateFile /etc/letsencrypt/live/example.com-0002/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com-0002/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

我想要服务的两台服务器位于机器2,与机器1那么,如何分别在radarr.example.com和上获取这两项服务sonarr.example.com

读了一些书后,我尝试使用反向代理,为每个服务配置一个虚拟主机,如下所示:

<VirtualHost *:80>
  ProxyPreserveHost On
  ProxyRequests Off
  
  ServerAlias radarr.example.com

  ProxyPass / http://192.168.1.20:7878/
  ProxyPassReverse / http://192.168.1.20:7878/

  ErrorLog /var/www/radarr/logs/error.log
  CustomLog /var/www/radarr/logs/access.log combined
</VirtualHost>

和 Sonarr 类似。

但是,当我导航到 时radarr.example.com,我没有获得预期的服务,而是获得了主站点。

我该如何让反向代理工作?或者我应该完全改用另一种策略?

编辑:如果有人知道并且可以建议一种更简单的方法,我也愿意放弃 apache。

答案1

我发现我遇到的问题是由于我只为域 mydomain.com 安装了 SSL 证书,而没有为域 radarr.mydomain.com 安装。我再次为该域运行 certbot,现在它可以正常工作了。

我不完全知道它为什么有效,如果有人有解释,请发布它,我会将其添加到答案中。

相关内容