问题:我需要在不同域上的同一台服务器上托管节点应用程序和php应用程序。
example.com应该正常使用端口80,但node-example.com应该路由到端口3000。
使用mod_proxy将端口80到3000的所有流量路由正常工作,因此:
<VirtualHost *:80>
ServerAdmin info@node-example.com
ServerName node-example.com
ServerAlias www.node-example.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
然而,这会使example.com和node-example.com指向localhost:3000并运行Node-app。
有没有办法让example.com保持指向端口80?
example.com/old-admin也可以指向端口80。
答案 0 :(得分:32)
只需制作两个<VirtualHost *:80>
代码
<VirtualHost *:80>
ServerAdmin info@node-example.com
ServerName www.node-example.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin info@node-example.com
ServerName node-example.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:80/
ProxyPassReverse http://localhost:80/
</Location>
</VirtualHost>
应该这样工作;)
如果您的localhost:80
应用不是节点,则可以移除<Proxy *>
&amp;该目标的<Location />
标记,并将其替换为DocumentRoot /var/www/node-example.com
- 您的index.html的静态路径
答案 1 :(得分:1)
我建议您为两个域创建两个不同的虚拟主机conf文件。除了在缩放比例不同时将它们移动到其他服务器之外,这还使您可以独立配置它们。
对于具有默认安装位置的apache2,
在/etc/apache2/sites-available/www.example1.com.conf中创建文件
<VirtualHost *:80>
ServerName www.example1.com
ServerAdmin webmaster@example1.com
<Directory /home/example1/api/admin/docs>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.html
</Directory>
<Directory /home/example1/api/mobile/docs>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.html
</Directory>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /api/ "http://localhost:30007/"
ProxyPassReverse / "http://localhost:30007/"
ErrorLog ${APACHE_LOG_DIR}/example1/example1.log
CustomLog ${APACHE_LOG_DIR}/example1/example1.log combined
</VirtualHost>
在www.example2.com.conf
中创建另一个文件sites-available
,然后复制上述配置,将example1替换为example2。
对于子域,请将文件名和内部配置中的www
替换为您的子域,例如:api
。
创建了conf文件后,必须使用命令
启用它们 a2ensite www.example1.com.conf
然后使用命令
重新加载apache2 sudo systemctl reload apache2
在重新加载apache之前,请确保具有在创建的APACHE_LOG_DIR中创建的目录example1
和example2
。
就这样。使用您的域名注册机构或CDN中的服务器IP地址配置您的域的A记录,无论您使用什么,都应该很方便。