如何重写URL在NGINX与位置参数?



我在一个web服务器上有一个应用程序(Openproject)。可在http://10.0.0.1:8000/

下访问在我的用户和Webserver后面是一个NGinx,我需要在一个特定的URL下发布:https://ngrp.com/openproject

所以我在我的Nginx配置中做了以下更改(在这个Nginx实例中,多个网站发布的"位置"设置):

location /openproject/ {
proxy_pass             http://10.0.0.1:8000/;
include                /etc/nginx/conf.d/proxy.conf;
}

但是当我通过反向代理打开页面时,web浏览器只显示一个白页。


在web浏览器调试器中,我看到一些路径是错误的,所以浏览器无法加载它。例子:

https://ngrp.com/assets/frontend/styles.c3a5e7705d6c5db9cfc1.css(URL中缺少/openproject/)

正确的格式是:

https://ngrp.com/openproject/assets/frontend/styles.c3a5e7705d6c5db9cfc1.css

所以有人能告诉我,需要哪些配置,所以我可以在URL下的Openproject https://ngrp.com/openproject/成功?

非常感谢。

当您使用proxy_pass时,您代理了整个HTTP请求,这意味着您实际上是在http://10.0.0.1:8000/上请求GET /openproject,而不仅仅是GET /

您可以在proxy_pass之前添加这一行来修复此问题并删除/openproject前缀:

rewrite /openproject/(.*) /$1 break;

这将请求的URL从/openproject/...更改为/...