node.js - 在 apache2 服务器上的 express Node js 中提供静态文件时自动重定向而无需代理传递名称

标签 node.js apache ubuntu proxy

我目前在 Ubuntu 服务器上使用 apache2,并在 apache2 站点可用配置中使用代理传递配置托管 Node js 应用程序。

我在我的服务器配置中添加了这一行

 ProxyPass /nodeapps http://localhost:3000

但是当我尝试像这样在我的公共(public)目录中提供静态文件时,

 app.use(express.static(__dirname + '/public'));

它在没有 proxypass 名称的情况下自动重定向,所以当我尝试打开我的

http://server-dns/nodeapps/help

我希望得到我的/public/help 目录,但它自动重定向到

http://server-dns/help

所以返回404错误

未找到

在此服务器上找不到请求的 URL/help/。

最佳答案

正如您在评论中指定的那样,似乎 index.htmlsysadmin/nodejsapps/nodeapps/public/help/ 目录中不可用或静态路径中存在问题因为你的网址 http://server-dns/help是正确的。所以交叉检查以下 2 点

Is sysadmin/nodejsapps/nodeapps/public/help/index.html exist ?
Is correct path used for static? You may like to use path module as bellow

var path = require('path');
app.use(express.static(path.join(__dirname, 'public')));

希望对您有所帮助:

关于node.js - 在 apache2 服务器上的 express Node js 中提供静态文件时自动重定向而无需代理传递名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39695696/

相关文章:

node.js - "npm install"nodemailer 中给定编码中的无效字符

node.js - PM2 集群模式 - 找不到模块 'dotenv/config'

python - 从命令行在 Linux 上运行 Python GUI 程序需要哪些软件包

java - 使用 Java 8 安装 Dynamic Code Evolution VM (DCE) 时出错

bash - 为什么我必须使用绝对路径来执行 Bash 脚本?

javascript - 尝试为我的 nodejs Controller 编写我的第一个 "global"函数

mysql - 将变量名指定为表名时出错

apache - 我需要一个 apache 服务器名设置吗?

java - 如何在 Apache HttpPost 中一起发布多种类型的参数

Apache - 如何将 http 请求仅转换为 https?