Apache 從子網域上的本機提供服務

Apache 從子網域上的本機提供服務

我正在嘗試使用 Apache 同時為多個網站提供服務,我想要獲得的結構由主網站組成,example.com並使用子網域radarr.example.comsonarr.example.com存取我的 Radarr 和 Sonarr 伺服器。

主要網站託管在機器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 而不是網域radar.mydomain.com 安裝了 ssl 憑證。我再次為該網域運行 certbot,現在它可以工作了。

我不太清楚為什麼它有效,如果有人有解釋,請發布它,我會將其添加到答案中。

相關內容