如何在 nginx 中正确重写 URL

如何在 nginx 中正确重写 URL

我有一个公网 IP,需要维护两台 Web 服务器,因此我决定使用反向代理服务器。我的代理服务器使用 NGNIX,后端代理服务器使用 Apache。

10.1.1.3是Nginx的ip

10.1.1.5 是 Apache 的 ip

我希望一个应用程序在 domain.com/project 上可用,另一个在 domain.com/application2 上可用

由于我仍在学习,因此我尝试使 nginx 的配置尽可能简单:

server{ 
     listen 80;

     location /project {
         rewrite /project / break;
         proxy_pass http://10.1.1.5:80;
     }
}

我正在尝试在 Apache Web 服务器上访问项目应用程序,但问题是项目应用程序没有 URL 10.1.1.50:80/project,所以我尝试重写它。它成功了,我可以通过 domain.com/project 访问服务器,但如果我尝试输入任何链接(例如创建帐户),它会将链接更改为 domain.com/account/register,而代理服务器需要 domain.com/project/account/register 才能工作。是否可以保留 URI 的项目部分以供以后的请求使用?

答案1

server{ 
     listen 80;
     server_name domain.com;
     location ~ ^/project?(.*) 
     {
            proxy_pass http://10.1.1.5:80$1$is_args$args;
     }
}

可能你需要这样的东西。

相关内容