【问题标题】:Node JS - Nginx - proxy_pass to a subdirectory - KoaNode JS - Nginx - proxy_pass 到子目录 - Koa
【发布时间】:2017-02-20 09:33:36
【问题描述】:

我在端口 5000 上运行 Koa 应用程序,我希望 Ngnix 在子目录中提供应用程序 - 例如:http://example.com/myNodeApp

这是我目前在 /etc/nginx/sites-enabled/default 中得到的内容

        location ^~ /myNodeApp/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass    http://localhost:5000/;
        }

这种可以工作...除了我的 Koa 应用程序中的任何重定向(例如 this.redirect('/'))都会转到 nginx 网络根目录 /

此外,它不会从我的 Koa 应用程序的 public 目录中呈现任何内容,例如样式表、javascript 和图像。

我做错了什么?谢谢。

【问题讨论】:

  • 你为什么使用正则表达式匹配位置?切换到简单字符串匹配location /myNodeApp/ {
  • 感谢@Terra。我读了一个类似的 SO question,他们在哪里这样做,并认为我也会尝试。更改为location /myNodeApp/ { ... }(没有您建议的正则表达式),得到相同的结果。
  • 你能检查并显示完整的Location 标头吗?带域部分。因为Location 标头重写仅在您的节点应用程序重定向到localhost:5000 时才起作用。但是如果节点应用程序重定向到localhost - 需要自定义重写。所以,需要知道位置标头的样子。
  • 不太清楚你在问什么 Terra(对不起)。我有一个股票 nginx 配置,并将上面的代码固定在 server { ... } 块内。这对我来说有点新鲜!
  • 哦,让我解释一下,你需要找到。阅读此nginx.org/en/docs/http/…,尤其是默认行为。使用 HTTP 标头 Location: http://xxxxx/xxx 进行重定向的节点应用程序。取决于域部分 - nginx 可以重写它或不重写它。如果此域部分 localhost:5000 - nginx 可以将此重定向重写为默认行为。如果节点应用程序使用另一个域部分(例如http://localhost/xxxx) - 您需要添加自定义proxy_redirect 指令。

标签: node.js nginx koa proxypass


【解决方案1】:

我最近遇到了同样的问题,这就是我要解决的问题。

在服务器配置中:

我必须添加

rewrite ^/myNodeApp/(.*)$ /$1 break;

到 NGINX 配置,在

location /myNodeApp/ {...}

块,在您的示例中已有的内容下。

在客户端:

我加了

<base href='/myNodeApp/'>

到我的 html 文件的

(或在我的情况下是 pug 布局文件)。这会为您的子目录的任何链接添加前缀。

请注意,您需要从现有链接中删除所有前导 /。例如

<link rel="stylesheet" href="layout.css">

而不是

<link rel="stylesheet" href="/layout.css">

那个人把我抓了一会儿。

奖励:

如果您像我一样使用 Socket.IO,则需要进行更多更改以阻止控制台中出现一些错误。您需要传递一个路径选项并指定您的子目录。

在您的 html 文件中

var socket = io.connect("/", {path: "/myNodeApp/socket.io"})

【讨论】:

  • 完美!谢谢 - 这正是我想要的。 +1
猜你喜欢
  • 2018-09-28
  • 2019-12-22
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
  • 2015-12-04
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多