使用Nginx代理到一个域名下的多个站点

Use Nginx to proxy to multiple sites under one domain name

我在服务器上有一个 jenkins 和 sonarqube 容器 运行。是否可以使用Nginx连接到同一域名下的每个?因此,例如 my.domain.com/jenkins 命中 jenkins 容器并且 my.domain.com/sonar 命中 sonarqube?

我对设置的初步猜测是这样的。

server {
  listen 80;
  server_name my.domain.com;


  location /sonar {
    proxy_pass http://sonarqube:9000/;
  }

  location /jenkins {
    proxy_pass http://jenkins:8080/;
  }
}

我保留 运行 的这个问题涉及在初始页面之后进行的后续调用。有没有办法在所有调用中保留 /sonar/ 和 /jenkins/ 部分?

您需要让这些应用程序了解不同的上下文,以便它们正确生成链接。对于 Jenkins,您需要在启动 Jenkins 时指定 --prefix=/jenkins,对于 SonarQube,您需要在启动 SonarQube 时设置环境变量 SONAR_WEB_CONTEXT=/sonar

参见: