问题标签 [nginx-config]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
224 浏览

nginx - 了解 NGINX 默认缓存

我有一个不同位置的 NGINX 配置。他们都返回一个人index.htmlindex.htmls 是随每个部署构建的。它们包括scriptJavaScript 文件的标签,这些文件在文件名中带有内容哈希,以破坏缓存。

我的问题是,在部署之后,一些必需的脚本正在运行,404因为下载index.html的 JS 文件名中有旧的内容哈希。好像是送的方式有问题index.html,因为是index.html客户端下载的老版本。

这是我的 NGINX 配置中的一个示例位置:

当我检查响应标头时,我看到所有 index.html 文件的 ETag。还不足以确保所有index.html文件的正确缓存行为吗?

我的下一个方法是添加一个Cache-Control标题。但我不知道它是否能解决我的问题,因为我无法准确解释为什么它会是正确的解决方案(但我想了解它)。

0 投票
1 回答
1627 浏览

docker - Docker 舞会/Prometheus 容器退出

当我运行此命令时,它会创建 docker 容器,但显示为退出状态,我无法启动它

我的目标是能够用自定义 prometheus.yml 替换 prometheus.yml 文件,以监控在http://localhost:70/nginx_status运行的 nginx

这是我的 prometheus.yml 文件

0 投票
3 回答
822 浏览

nginx - 使用 Flask 重定向在浏览器中保留 URL

我在 Heroku 上部署了一个 Bokeh 服务器应用程序,具有多种样式,导致 URL 很麻烦。例如:https ://invlabs-bokehserver.herokuapp.com/avyview?style=snowpacktracker

我正在使用部署在 Heroku 上的 Flask 从一个简单的自定义域 ( www.snowpacktracker.com ) 获取扩展,并重定向到运行 Bokeh 服务器并返回 html 内容的第二个 Heroku 应用程序。相关的 Flask 应用代码:

我希望在 Flask 重定向发生时原始 URL 保持不变。Flask 中是否有执行此操作的选项?或者我可以配置网络服务器来完成这个吗?

更新和更多细节:

我无法让 nginx 代理正常工作。我现在的情况:

www.snowpacktracker.com设置为运行 nginx + gunicorn + Flask 的 Heroku 应用程序的自定义域(使用 Heroku 提供的 DNS 目标)(这是一个可用于查看当前行为的工作链接)。这个 Heroku 应用程序的基础 URL 是https://snowpacktracker.herokuapp.com

当第一个 Heroku 应用程序收到请求时,Flask 应用程序重定向到运行 Bokeh 服务器的第二个 Heroku 应用程序。按照目前的实现,您可以在浏览器中看到 URL 切换到https://invlabs-bokehserver.herokuapp.com/avyview?style=snowpacktracker

www.snowpacktracker.comwww.snowpacktracker.com/btac都重定向到同一个 URL。我用www.snowpacktracker.com/btac/historic定义了第二种样式,它重定向到https://invlabs-bokehserver.herokuapp.com/avyview

我的目标是让www.snowpacktracker.com的页面加载(以及任何扩展名:/btac 或 /btac/historic)通过 Flask 重定向,如当前实现的那样,但原始 URL 保持不变。

我一直在尝试根据@Fian 的答案中的链接编辑配置文件location中的块nginx.conf.erb,但我没有运气。

proxy_pass块中用于或proxy_redirect(或rewrite?)的正确语句是什么location来完成这种期望的行为?

我当前的 nginx 配置文件(在Heroku nginx 构建包中提供):

0 投票
0 回答
54 浏览

nginx - Nginx 仅在子目录中提供静态文件

我有图像路径/uploads/{some user id}/0a17f689-b7d5-4592-a16a-85feb1ae00c7.gif。我想用 nginx 服务这种路径。如何让 nginx 在与此模式匹配的所有目录中查找文件,但我不想在 url 中有 {some user id}。所以我想要这样的网址/uploads/0a17f689-b7d5-4592-a16a-85feb1ae00c7.gif

这是我的 nginx.conf 位置:

0 投票
3 回答
3135 浏览

nginx - 如果上游启动,Nginx 绕过缓存,如果关闭则使用缓存

为了在上游启动时绕过缓存(max-age 1)并在关闭时使用缓存(proxy_cache_use_stale),我创建了以下配置:

但是当上游关闭并且客户端仅获得 504 Gateway Timeout 时,不使用缓存。我已经阅读了以下文章:

https://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_use_stale

如何配置 NginX 仅在后端关闭时提供缓存内容(5xx 响应代码)?

https://serverfault.com/questions/752838/nginx-use-proxy-cache-if​​-backend-is-down

它不像我预期的那样工作。任何帮助表示赞赏。

0 投票
1 回答
335 浏览

php - 允许 php 值仅在子目录中工作

在我的 php.ini 中,我禁用了 allow_url_fopen。我想为我的 /example 目录启用它,如下所示,但它不起作用。但是,如果我将指令从 /example 移动到它上面的 ~.php$ 位置,那么它可以正常工作。我在想 /example 位置块永远不会被处理。任何想法如何允许 url fopen 仅在 /example 目录中工作?

0 投票
1 回答
2019 浏览

reactjs - nginx配置提供动态错误页面

我有一个 nginx 服务器设置,用于代理和提供静态内容。静态内容基于多个反应应用程序。我想要做的是替换来自 nginx 的默认错误页面并从 React 应用程序提供错误页面。

React 应用程序根据 url 处理错误页面。http://localhost/401.html将为应用程序提供标准的 401 HTTP 错误页面,依此类推。问题是如何在nginx中正确配置这个,因为实际上没有401.html页面。只有一个 html 文件,即 `index.html'。React 应用程序根据使用 React Router 的 URL 处理所有自己的。

我尝试过error_page使用 nginx 进行一些配置,但没有成功。

以下是错误页面配置的样子:```

```

这就是我将它包含在我的nginx.conf

是否可以在 nginx 中提供这样的错误页面?因为它仍然给了我来自 nginx 的标准 404 not found 错误页面,因为我认为它正在尝试401.html在该文件夹中查找页面。

0 投票
0 回答
61 浏览

nginx-config - nginx 配置 - 否定条件

我在 nginx 配置中为所有文件进行 HTTP 授权,不包括 index.php:

于是,nginx 不再执行 PHP 文件,而是开始给他们下载。没有location ~ /(?! index.php)- 文件通常会被执行。

如何正确地做出否定条件?

0 投票
2 回答
1071 浏览

javascript - 如何更改角度应用程序的 nginx 配置文件

我的 Angular 应用程序正在 nginx 服务器上运行。当我输入http://**.8.100.248:30749它时,显示 nginx 正在运行。(显示默认 index.html)。但是我的应用程序存在于html具有文件夹名称的文件夹中test。所以我的应用程序出现在“html”中——> 测试——> index.html”;;

因此,当我在浏览器上键入http://**.8.100.248:30749/test/index.html我的应用程序时,但是当我从一个页面路由到另一个页面时,reload我的页面给了我404.

当我重新加载我的角度路由页面时,Nginx 给了我 404。所以我改变了nginx配置但仍然没有成功

任何更新

0 投票
2 回答
3006 浏览

php - 在子目录中使用 nginx 安装 Laravel

我尝试只为一个子目录(laravel 目录)启用 PHP,但我没有设法让它工作。NGINX 总是说 404 File not found 或 php 说“没有指定输入文件”。我究竟做错了什么?

这是我的位置配置:

UDPATE 1:似乎 nginx 没有正确评估我的位置表达式:

2018/09/12 16:30:44 [error] 26476#24408: *1 CreateFile() "C:/Server/nginx/html/index.php" 失败(2:系统找不到指定的文件),客户端:127.0.0.1,服务器:localhost,请求:“GET /laravel/ HTTP/1.1”,主机:“localhost”

这是错误的路径,至少是 / 位置的根:

我试图移动块但没有任何变化。

更新 2:似乎 nginx 非常有问题。该文档指出:

按指定顺序检查文件是否存在,并使用第一个找到的文件进行请求处理;处理在当前上下文中执行。文件的路径是根据根和别名指令从文件参数构造的。可以通过在名称末尾指定斜杠来检查目录是否存在,例如“$uri/”。如果没有找到任何文件,则内部重定向到最后一个参数中指定的 uri。

正如我的错误日志所示,try_files 指令不尊重根路径,因为它试图打开相对于另一个位置块的文件。