如何为Mojolicious应用剥离Nginx中的基本URL?

时间:2018-06-26 06:08:52

标签: perl nginx mojolicious

我正在尝试将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;

没有结果。

那是怎么做的?

1 个答案:

答案 0 :(得分:0)

要在URI上游传递时修改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