我如何去除 Nginx 中的基础 url 以获得 Mojolicious 应用程序?
How can I strip the base url in Nginx for a Mojolicious app?
我正在尝试 运行 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/(.+)$ ;
没有结果。
怎么做到的?
要修改向上游传递的 URI,您可以使用 rewrite...break
或使用 proxy_pass
指令本身执行类似的功能。
例如:
location /print {
rewrite ^/print(/.*)$ break;
proxy_pass http://printo;
...
}
记得在重写的 URI 中保留前导 /
。有关详细信息,请参阅 this document。
或者:
location /print/ {
proxy_pass http://printo/;
...
}
location
值应该有尾随 /
以确保正确进行文本替换。有关详细信息,请参阅 this document。
我正在尝试 运行 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/(.+)$ ;
没有结果。
怎么做到的?
要修改向上游传递的 URI,您可以使用 rewrite...break
或使用 proxy_pass
指令本身执行类似的功能。
例如:
location /print {
rewrite ^/print(/.*)$ break;
proxy_pass http://printo;
...
}
记得在重写的 URI 中保留前导 /
。有关详细信息,请参阅 this document。
或者:
location /print/ {
proxy_pass http://printo/;
...
}
location
值应该有尾随 /
以确保正确进行文本替换。有关详细信息,请参阅 this document。