如何 运行 nodejs 在 apache 服务器中的应用
How to run nodejs application in apache server
我想 运行 我的 nodejs 应用程序通过 apache 服务器上的子域。我在 cpanel 中创建了主域的子域。我的项目有 3 个以上的子域,所有子域都指向不同的 nodejs 应用程序。子域将我重定向到正确的文件夹中,但是当我 运行 通过浏览器中的子域应用程序时,它不会 运行 在 apache 服务器上节点应用程序。它仅显示项目的文件夹列表。
以下link供参考
http://www.codingtricks.biz/run-nodejs-application-apache/
Running Node.js in apache?
项目目录:
/home/abc/public_html/node
我的主域名是:
我在 cpanel 中创建了子域:
我在浏览器中访问子域:
node.example.com
我在软层服务器上部署了我的应用程序。
apache配置如下:
文件:
/usr/local/apache/conf/includes/abc_node.conf
配置:
<VirtualHost 132.159.25.21:80>
ServerAdmin info@example.com
ServerName node.example.com
ServerAlias www.node.example.com
DocumentRoot /home/abc/public_html
<Directory /home/abc/public_html/node>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location /node>
ProxyPass http://132.159.25.21:8080
ProxyPassReverse http://132.159.25.21:8080
</Location>
ErrorLog /home/abc/public_html/node/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /home/abc/public_html/node/access.log combined
</VirtualHost>
命令摘要:
命令:
/usr/local/apache/bin/httpd -tD DUMP_VHOSTS
输出:
AH00548: NameVirtualHost has no effect and will be removed in the next release /usr/local/apache/conf/httpd.conf:445
VirtualHost configuration:
127.0.0.1:80 wb01-development.example.com (/usr/local/apache/conf/httpd.conf:504)
127.0.0.1:443 wb01-development.example.com (/usr/local/apache/conf/httpd.conf:554)
132.159.25.21:443 is a NameVirtualHost
default server example.com (/usr/local/apache/conf/httpd.conf:368)
port 443 namevhost example.com (/usr/local/apache/conf/httpd.conf:368)
alias www.example.com
port 443 namevhost wb01-development.example.com (/usr/local/apache/conf/httpd.conf:554)
wild alias cpanel.*
wild alias whm.*
wild alias webmail.*
wild alias webdisk.*
wild alias cpcalendars.*
wild alias cpcontacts.*
132.159.25.21:80 is a NameVirtualHost
default server 132.159.25.21 (/usr/local/apache/conf/httpd.conf:274)
port 80 namevhost 132.159.25.21 (/usr/local/apache/conf/httpd.conf:274)
port 80 namevhost example.com (/usr/local/apache/conf/httpd.conf:297)
alias www.example.com
port 80 namevhost node.example.com (/usr/local/apache/conf/httpd.conf:446)
alias www.node.example.com
port 80 namevhost wb01-development.example.com (/usr/local/apache/conf/httpd.conf:504)
wild alias cpanel.*
wild alias whm.*
wild alias webmail.*
wild alias webdisk.*
wild alias cpcalendars.*
wild alias cpcontacts.*
port 80 namevhost node.example.com (/usr/local/apache/conf/includes/abc_node.conf:1)
alias www.node.example.com
*:* wb01-development.example.com (/usr/local/apache/conf/httpd.conf:286)
命令
/usr/local/apache/bin/httpd -tD DUMP_MODULES
输出:
AH00548: NameVirtualHost has no effect and will be removed in the next release /usr/local/apache/conf/httpd.conf:445
Loaded Modules:
core_module (static)
authn_file_module (static)
authn_core_module (static)
authz_host_module (static)
authz_groupfile_module (static)
authz_user_module (static)
authz_core_module (static)
access_compat_module (static)
auth_basic_module (static)
socache_shmcb_module (static)
socache_dbm_module (static)
so_module (static)
include_module (static)
filter_module (static)
deflate_module (static)
http_module (static)
mime_module (static)
log_config_module (static)
logio_module (static)
env_module (static)
expires_module (static)
headers_module (static)
unique_id_module (static)
setenvif_module (static)
version_module (static)
proxy_module (static)
proxy_connect_module (static)
proxy_http_module (static)
slotmem_shm_module (static)
ssl_module (static)
mpm_prefork_module (static)
unixd_module (static)
status_module (static)
autoindex_module (static)
asis_module (static)
suexec_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
rewrite_module (static)
bwlimited_module (shared)
suphp_module (shared)
security2_module (shared)
我运行 我的节点 js 应用程序使用以下 ip 和端口
132.159.25.21:3030
我按照以下方式在 nodejs 应用程序中定义了我的端口
var port = parseInt(process.env.PORT, 3030) || 8080;
引用此错误:AH00548:NameVirtualHost 无效,将在下一个版本中删除 /usr/local/apache/conf/httpd.conf:445
下面的代码已经写好了。
名称虚拟主机 132.159.25.21:80
我将 vhosts 文件放在 /usr/local/apache/conf/httpd.conf 文件的末尾,因为他们在文件中写了一条警告“#请勿编辑。自动生成。如果您需要进行更改,请使用包含文件。"
我需要帮助来解决这个问题。如果您需要进一步了解应用程序,请告诉我。
除了一位外,配置看起来是正确的,/node 位置路径应该具有目标匹配的斜杠以正确地进行反向代理,而不会产生意外后果:
为了清晰起见,我宁愿这样定义它:
ProxyPass /node/ http://132.159.25.21:8080/
ProxyPassReverse /node/ http://132.159.25.21:8080/
考虑到代理使用目标 http://132.159.25.21:8080
是不正确的,它应该始终定义为 http://132.159.25.21:8080/
因此源应该以相同的方式匹配斜线,因此 /node/ 是正确的方法。
至于"NameVirtualHost"警告。它只是告诉你,在 Apache HTTPD 的 2.4.X 版本中不再需要它,因为只有 2.2 需要该指令,2.4 得到 "smarter" 检测命名虚拟主机。
旁注:<Proxy *>
没有效果,所以定义它是徒劳的。 Proxy * 用于转发代理,显然您不想要它,并且已通过关闭 ProxyRequests 禁用了此类功能。所以把那个也去掉。
--- 由于您的评论,答案扩展:
要到达您的节点,您必须访问:
http://node.example.com/node/
或添加一个 "default" 重定向,将您带到 it.Such 作为:
RedirectMatch ^/$ /node/
您正在通过访问 node.example.com 获取索引(文件列表),因为 -Indexes 是为子目录定义的,这意味着前一个目录启用了索引,因此定义:
<Directory /home/abc/public_html>
Options -Indexes +FollowSymLinks
....
而不是定义 /home/abc/public_html/node,这不适用于这种情况,因为 node/ 不是目录,而是后端中的虚拟路径,因此为了更正摇动,它不应该包含在目录中路径。
如果你只想在访问时访问后端 http://node.example.com/ 就用这个代替 ProxyPass /node/:
ProxyPass / http://132.159.25.21:8080/
ProxyPassReverse / http://132.159.25.21:8080/
我想 运行 我的 nodejs 应用程序通过 apache 服务器上的子域。我在 cpanel 中创建了主域的子域。我的项目有 3 个以上的子域,所有子域都指向不同的 nodejs 应用程序。子域将我重定向到正确的文件夹中,但是当我 运行 通过浏览器中的子域应用程序时,它不会 运行 在 apache 服务器上节点应用程序。它仅显示项目的文件夹列表。
以下link供参考
http://www.codingtricks.biz/run-nodejs-application-apache/
Running Node.js in apache?
项目目录:
/home/abc/public_html/node
我的主域名是:
我在 cpanel 中创建了子域:
我在浏览器中访问子域:
node.example.com
我在软层服务器上部署了我的应用程序。
apache配置如下:
文件:
/usr/local/apache/conf/includes/abc_node.conf
配置:
<VirtualHost 132.159.25.21:80>
ServerAdmin info@example.com
ServerName node.example.com
ServerAlias www.node.example.com
DocumentRoot /home/abc/public_html
<Directory /home/abc/public_html/node>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location /node>
ProxyPass http://132.159.25.21:8080
ProxyPassReverse http://132.159.25.21:8080
</Location>
ErrorLog /home/abc/public_html/node/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /home/abc/public_html/node/access.log combined
</VirtualHost>
命令摘要:
命令:
/usr/local/apache/bin/httpd -tD DUMP_VHOSTS
输出:
AH00548: NameVirtualHost has no effect and will be removed in the next release /usr/local/apache/conf/httpd.conf:445
VirtualHost configuration:
127.0.0.1:80 wb01-development.example.com (/usr/local/apache/conf/httpd.conf:504)
127.0.0.1:443 wb01-development.example.com (/usr/local/apache/conf/httpd.conf:554)
132.159.25.21:443 is a NameVirtualHost
default server example.com (/usr/local/apache/conf/httpd.conf:368)
port 443 namevhost example.com (/usr/local/apache/conf/httpd.conf:368)
alias www.example.com
port 443 namevhost wb01-development.example.com (/usr/local/apache/conf/httpd.conf:554)
wild alias cpanel.*
wild alias whm.*
wild alias webmail.*
wild alias webdisk.*
wild alias cpcalendars.*
wild alias cpcontacts.*
132.159.25.21:80 is a NameVirtualHost
default server 132.159.25.21 (/usr/local/apache/conf/httpd.conf:274)
port 80 namevhost 132.159.25.21 (/usr/local/apache/conf/httpd.conf:274)
port 80 namevhost example.com (/usr/local/apache/conf/httpd.conf:297)
alias www.example.com
port 80 namevhost node.example.com (/usr/local/apache/conf/httpd.conf:446)
alias www.node.example.com
port 80 namevhost wb01-development.example.com (/usr/local/apache/conf/httpd.conf:504)
wild alias cpanel.*
wild alias whm.*
wild alias webmail.*
wild alias webdisk.*
wild alias cpcalendars.*
wild alias cpcontacts.*
port 80 namevhost node.example.com (/usr/local/apache/conf/includes/abc_node.conf:1)
alias www.node.example.com
*:* wb01-development.example.com (/usr/local/apache/conf/httpd.conf:286)
命令
/usr/local/apache/bin/httpd -tD DUMP_MODULES
输出:
AH00548: NameVirtualHost has no effect and will be removed in the next release /usr/local/apache/conf/httpd.conf:445
Loaded Modules:
core_module (static)
authn_file_module (static)
authn_core_module (static)
authz_host_module (static)
authz_groupfile_module (static)
authz_user_module (static)
authz_core_module (static)
access_compat_module (static)
auth_basic_module (static)
socache_shmcb_module (static)
socache_dbm_module (static)
so_module (static)
include_module (static)
filter_module (static)
deflate_module (static)
http_module (static)
mime_module (static)
log_config_module (static)
logio_module (static)
env_module (static)
expires_module (static)
headers_module (static)
unique_id_module (static)
setenvif_module (static)
version_module (static)
proxy_module (static)
proxy_connect_module (static)
proxy_http_module (static)
slotmem_shm_module (static)
ssl_module (static)
mpm_prefork_module (static)
unixd_module (static)
status_module (static)
autoindex_module (static)
asis_module (static)
suexec_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
rewrite_module (static)
bwlimited_module (shared)
suphp_module (shared)
security2_module (shared)
我运行 我的节点 js 应用程序使用以下 ip 和端口
132.159.25.21:3030
我按照以下方式在 nodejs 应用程序中定义了我的端口
var port = parseInt(process.env.PORT, 3030) || 8080;
引用此错误:AH00548:NameVirtualHost 无效,将在下一个版本中删除 /usr/local/apache/conf/httpd.conf:445 下面的代码已经写好了。 名称虚拟主机 132.159.25.21:80
我将 vhosts 文件放在 /usr/local/apache/conf/httpd.conf 文件的末尾,因为他们在文件中写了一条警告“#请勿编辑。自动生成。如果您需要进行更改,请使用包含文件。"
我需要帮助来解决这个问题。如果您需要进一步了解应用程序,请告诉我。
除了一位外,配置看起来是正确的,/node 位置路径应该具有目标匹配的斜杠以正确地进行反向代理,而不会产生意外后果:
为了清晰起见,我宁愿这样定义它:
ProxyPass /node/ http://132.159.25.21:8080/
ProxyPassReverse /node/ http://132.159.25.21:8080/
考虑到代理使用目标 http://132.159.25.21:8080
是不正确的,它应该始终定义为 http://132.159.25.21:8080/
因此源应该以相同的方式匹配斜线,因此 /node/ 是正确的方法。
至于"NameVirtualHost"警告。它只是告诉你,在 Apache HTTPD 的 2.4.X 版本中不再需要它,因为只有 2.2 需要该指令,2.4 得到 "smarter" 检测命名虚拟主机。
旁注:<Proxy *>
没有效果,所以定义它是徒劳的。 Proxy * 用于转发代理,显然您不想要它,并且已通过关闭 ProxyRequests 禁用了此类功能。所以把那个也去掉。
--- 由于您的评论,答案扩展:
要到达您的节点,您必须访问:
http://node.example.com/node/
或添加一个 "default" 重定向,将您带到 it.Such 作为:
RedirectMatch ^/$ /node/
您正在通过访问 node.example.com 获取索引(文件列表),因为 -Indexes 是为子目录定义的,这意味着前一个目录启用了索引,因此定义:
<Directory /home/abc/public_html>
Options -Indexes +FollowSymLinks
....
而不是定义 /home/abc/public_html/node,这不适用于这种情况,因为 node/ 不是目录,而是后端中的虚拟路径,因此为了更正摇动,它不应该包含在目录中路径。
如果你只想在访问时访问后端 http://node.example.com/ 就用这个代替 ProxyPass /node/:
ProxyPass / http://132.159.25.21:8080/
ProxyPassReverse / http://132.159.25.21:8080/