我已经在 Ubuntu 服务器 14.04 上设置了 Nginx,我想配置一个非常简单的服务器块,用于侦听 /app 路径并将流量重定向到本地正在运行的 Nodejs 实例。
我已经使用 proxy_pass 和其他代理设置做到了这一点。
我的问题是,节点应用程序中的所有静态内容(img、js 等)都试图从 /var/www/html 提供服务,这是在 Nginx 安装时创建的默认站点配置中定义的根目标!我已从启用的站点文件夹中删除了符号链接,甚至从站点可用文件夹中删除了默认文件,但没有结果!即使如此,根路径仍然服务于默认的 Nginx 欢迎页面,该页面是在此站点配置中定义的,而不是在其他地方定义的!
Nginx 默认值是否在其他地方定义?只要我创建一个简单的站点配置,就像server {}
欢迎页面一样简单,并且静态内容将按照我已删除的默认文件中的定义提供!我该如何解决这个问题?
更新:我发现提供的默认文件不是来自 /var/www/html,因为我认为它是在站点可用/默认中定义的。相反,它是由/usr/share/nginx/html.....但是配置中的任何地方都没有提到这个路径?它如何从那里得到它?
答案1
该/usr/share/nginx/html
目录被编译为内置默认文档根目录。
您可以使用配置文件覆盖内置默认值,但其中的值可能是包的默认值(如您安装 nginx 的分发包中的值),但不一定与默认编译值相同。
您可以通过运行来检查编译时间值nginx -V
。
请注意,nginx 的构建方式基本上无需任何配置即可工作,而 apache 需要配置文件来告诉它要做什么,因为 apache 基本上没有默认编译的任何内容(可能除了配置文件的位置)。也许这就是混乱产生的地方。