VPS 上的 Web 应用程序。如何使其出现在子域上?

VPS 上的 Web 应用程序。如何使其出现在子域上?

我正在使用个人 VPS(Ubuntu 20,Apache2)来托管 Web 应用。目前有 2 个静态站点,site1.com 和 site2.org,均在运行。

我安装了一个当前在端口 8065 上可用的应用程序,例如:site2.org:8065

我的问题是,如何设置 Apache 以使应用程序出现在mm.site2.org?(带有子域“mm”)。

我创建了一个这样的配置文件:

# /etc/apache2/sites-available/mm.site2.org.conf
<VirtualHost *:80>
    ServerName mm.site2.org

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined


    ProxyRequests Off
    <Proxy http://localhost:8065/*>       
      Order deny,allow
      Allow from all
    </Proxy>
        
    ProxyPass / http://127.0.0.1:8065/
    ProxyPassReverse / http://127.0.0.1:8065/

    <Location />
      Order allow,deny
      Allow from all
    </Location>

</VirtualHost>

完成上述设置后,我运行了必要的命令来重新启动服务,如下所示:

sudo a2ensite mm.site2.org.conf
sudo systemctl reload apache2
sudo service apache2 restart

<Proxy ...>我还根据一些不同的来源尝试了 Apache conf 文件中该行的变体,使用<Proxy *>一些来源建议的简单方法。

如果相关的话,我的 DNS 设置仅包含每个站点的两个 A 记录(@www)。

的输出sudo apache2ctl -S为:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 12.345.67.890. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:443                  is a NameVirtualHost
         default server site1.com (/etc/apache2/sites-enabled/site1.com-le-ssl.conf:2)
         port 443 namevhost site1.com (/etc/apache2/sites-enabled/site1.com-le-ssl.conf:2)
                 alias www.site1.com
         port 443 namevhost site2.org (/etc/apache2/sites-enabled/site2.org-le-ssl.conf:2)
                 alias www.site2.org
*:80                   is a NameVirtualHost
         default server 12.345.67.890 (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost 12.345.67.890 (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost site1.com (/etc/apache2/sites-enabled/site1.com.conf:1)
                 alias www.site1.com
         port 80 namevhost site2.org (/etc/apache2/sites-enabled/site2.org.conf:1)
                 alias www.site2.org
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/run/apache2/" mechanism=default 
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

没有成功让网络应用程序出现在所需的子域上。

答案1

根据您的内容,我认为 DNS 配置不正确:

如果相关的话,我的 DNS 设置仅包含每个站点的两个 A 记录(@ 和 www)。

mm.site2.org. A 12.345.67.890您必须为子域、地址:或 cname(别名):添加 DNS RR mm.site2.org. CNAME www.site2.org.。要将所有子域定向到此服务器,RR 名称可以是通配符:*.site2.org. A 12.345.67.890(CNAME RR 可能也足够了)。(似乎您已经预料到它已经像这样工作了。)

相关内容