我想在由 Apache (2.4.7) 服务器提供服务的/home/www/public/v1
域 ( ) 的子文件夹 ( )中运行一个 Meteor.js 应用程序/home/www/public
。我已设置了一个虚拟主机,用于监听端口 80,并将以“v1”开头的位置代理到 nodejs 应用程序。它运行正常(我认为),只是我得到了一个由 Meteor.js 生成的 404 页面。
我是否必须修改 Meteor.js 设置以接受来自“domain.tld/v1”而不是“domain.tld”的请求?如果是这样,哪个文件?这种设置完全可行吗?
虚拟主机配置(已编辑以便于阅读)
<VirtualHost *:80>
ServerName domain.tld
DocumentRoot /home/username/www/domain.tld/public
<Directory />
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<Directory /home/username/www/domain.tld/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from All
Require all granted
</Directory>
# NODEJS APP in V1 FOLDER
ProxyRequests on
<Proxy *>
Order deny,allow
Allow from all
Require all granted
</Proxy>
<Location "/v1/">
ProxyPreserveHost on
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
答案1
配置
您的配置是正确的,但有些选项已经过时且其他选项不需要:
<VirtualHost *:80>
ServerName domain.tld
DocumentRoot /home/username/www/domain.tld/public
<Directory />
Options +FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/username/www/domain.tld/public/>
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride All
</Directory>
# NODEJS APP in V1 FOLDER
<Location "/v1">
ProxyPass http://localhost:3000/V1
ProxyPassReverse http://localhost:3000/V1
</Location>
</VirtualHost>
Meteor.js 将从端口 3000/v1 重定向到端口 80/v1
更多信息:
Apache 2.4 中不再存在此问题
Order allow,deny
allow from All
当你受到限制时需要这样做
Require all granted
这将使您的服务器代理任何请求,并且它不是您所需要的(https://httpd.apache.org/docs/2.4/en/mod/mod_proxy.html#proxyrequests)
ProxyRequests on
对于你的情况,这是可选的(https://httpd.apache.org/docs/2.4/en/mod/mod_proxy.html#proxypreservehost)
ProxyPreserveHost on