为多个网站提供 http nginx 代理

为多个网站提供 http nginx 代理

我必须配置一个 Nginx 服务器,它将用作 http(s) 代理并像 Apache 服务器一样使用 proxy_pass 和 proxy_pass_reverse 指令进行缓存。

系统将如下所示:nginx 服务器响应 mydomain.com 请求。如果我输入 mydomain.com/redmine,nginx 服务器必须在内部地址上执行 proxy_pass(例如:192.168.0.207)。其他服务(如 mydomain.com/zabbix)也一样。如果我在 redmine 上导航,URL 将是 mydomain.com/redmine/page1¶m[...] 这就像在 apache vhost 上使用多个 proxy_pass 和 proxy_pass_reverse 指令一样。

我在使用 Redmine 等网站时遇到了麻烦,因为如果我点击 Redmine 上的链接,mydomain.com/redmine/page1 会重定向到 mydomain.com/page1,从而导致 404 错误(该网页在 nginx 服务器上搜索)。如果我直接输入 mydomain.com/redmine/page1,它就可以正常工作。

我该如何解决这个问题?谢谢

编辑

此配置对我不起作用。例如,我尝试过:

location /pma {
    proxy_pass      http://192.168.1.208/phpmyadmin;
    proxy_redirect https://mydomain.com/ https://mydomain.com/pma/;
}

登录页面已正确加载,但当我尝试登录时,我的浏览器打开此链接:http://mydomain.com/phpmyadmin/index.php?lang=[...]并出现 404 错误。

答案1

proxy_redirect指令可用于修改后端服务器发送的重定向。根据您对行为的描述,您需要以下配置:

proxy_pass http://192.168.0.207;
proxy_redirect http://mydomain.com/ http://mydomain.com/redmine/;

对 phpMyAdmin 尝试一下:

proxy_pass http://192.168.1.208/phpmyadmin/;
proxy_redirect http://mydomain.com/phpmyadmin/ http://mydomain.com/pma/;

相关内容