【问题标题】:How can I strip the base url in Nginx for a Mojolicious app?如何在 Nginx 中为 Mojolicious 应用程序剥离基本 URL?
【发布时间】:2018-06-26 06:08:51
【问题描述】:

我正在尝试运行 Mojolicious 作为反向代理。我的 Nginx 配置如下所示:

upstream printo {
    server 127.0.0.1:3000;
}

[..]

location /print {
   proxy_pass http://printo;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
}

我想在请求到达 Mojolicious 应用程序之前删除 URL 的 /printo 部分 - 否则,所有请求都有一个 /printo/something URL,这会导致 404。

我见过this,但如果可能的话,我想在 Nginx 中做。

我试过这样重写:

rewrite ^/print/(.+)$ $1;

没有结果。

这是怎么做到的?

【问题讨论】:

  • 这个问题真的与 Perl 或 Mojolicious 有关吗?您似乎在询问 Apache 配置问题。

标签: perl nginx mojolicious


【解决方案1】:

要在上游传递 URI 时对其进行修改,您可以使用 rewrite...break 或使用 proxy_pass 指令本身执行类似的功能。

例如:

location /print {
    rewrite ^/print(/.*)$ $1 break;
    proxy_pass http://printo;
    ...
}

请记住在重写的 URI 中保留前导 /。有关详细信息,请参阅this document。 或者:

location /print/ {
    proxy_pass http://printo/;
    ...
}

location 值应以/ 结尾,以确保正确进行文本替换。详情请见this document

【讨论】:

  • 第二个例子有效。我没能做到第一个。 @理查德史密斯
猜你喜欢
  • 2020-12-01
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 2017-03-14
相关资源
最近更新 更多