问题:我需要承载节点的应用程序,并在不同的域在同一台服务器上的PHP应用程序。
example.com应该使用80端口为正常,但node-example.com应该路由端口3000。
路由所有流量从80端口3000使用mod_proxy,正是如此正常工作:
<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,运行节点的应用程序。
有没有办法让example.com指向80端口?
这也将是好为example.com/old-admin指向端口80。
只要做两个<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 *>
和<Location />
为目标的标签,取而代之的是DocumentRoot /var/www/node-example.com
-你的静态路径的index.html
我建议你创建两个不同的虚拟主机的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
并复制上面的配置与例题更换例1。
对于子域,更换www
:在文件名,里面有你的子域名,如配置api
。
一旦你创建了conf文件,你有一个命令,让他们
a2ensite www.example1.com.conf
然后重新加载的apache2与命令
sudo systemctl reload apache2
请确保您有目录example1
和example2
创建重新加载Apache之前在APACHE_LOG_DIR创建。
而已。 配置与服务器IP地址域的A记录域名注册机构或CDN,无论您使用的,你应该是好去。
文章来源: Apache + Node.js + mod_proxy. How to route one domain to :3000 and another to :80