我目前正在运行一个使用 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>