如何在同一服务器/域上提供 wordpress(LAMP)和 Angular(Node/Express)应用程序

如何在同一服务器/域上提供 wordpress(LAMP)和 Angular(Node/Express)应用程序

我目前正在运行一个使用 Ubuntu 16.04 的 Web 服务器,它提供了一个 Wordpress 网站,使用 LAMP 堆栈和 LetsEncrypt SSL 来加密网站。我希望能够在同一台服务器上使用子域运行带有 MEAN 堆栈的 Angular 应用程序。

这些是我现在在启用站点的文件夹中运行的 Apache 文件。

000-默认.conf

<VirtualHost *:80>
        ServerName www.example.com
        Redirect permanent / https://example.com/
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

例如-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName example.com
        ServerAdmin [email protected]
        DocumentRoot /var/www/example
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/example>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
         </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias www.example.com
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
</IfModule>

我能实现我想要的吗?如果可以,怎么做?

答案1

可以。但是,您不能将两个侦听器绑定到同一个端口和设备上。

最简单的方法是提供 node.js 应用程序通过apache。
首先,确保在 httpd.conf 或其他 conf 文件中启用 mod_proxy。然后为您的子域创建一个新的虚拟主机,指向 node.js 应用程序正在监听的端口。
例如:(假设你的 node.js 应用程序正在监听端口 8080)

<VirtualHost *:443>
    ServerName mysub.domain.com
    ProxyPreserveHost On

    # proxy settings to route to node.js
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass "/" "https://localhost:8080/"
    ProxyPassReverse "/" "https://localhost:8080/"

    # ssl settings
    Include /etc/letsencrypt/options-ssl-apache.conf
    ServerAlias www.example.com
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

</VirtualHost>

这将使所有流量通过 Apache 到达 node.js 应用程序。
如果您未在 node.js 应用程序上运行 ssl,则应为此虚拟主机使用端口 80 和 http://。

<VirtualHost *:80>
    ServerName mysub.domain.com
    ProxyPreserveHost On

    # proxy settings to route to node.js
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass "/" "http://localhost:8080/"
    ProxyPassReverse "/" "http://localhost:8080/"

</VirtualHost>

相关内容