使用 Wildfly 的 Nginx 反向代理

使用 Wildfly 的 Nginx 反向代理

我们有一个 URL www.abc.com,它应该指向http://IP:8080/app1/index.html在 wildfly-8.2.0.Final 上运行。我们还有另一个 URL www.def.com 想要指向http://IP:8080/app2/index.html在同一个 wildfly 安装上。

如果我们使用:

server {
  listen       IP:80;
  server_name  www.abc.com;
    location / {
        proxy_set_header  Host $host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_pass http://IP:8080/;
    }
}

这是可行的,并允许我们将 www.abc.com 反向代理到http://IP:8080/这意味着我们得到了默认的 Wildfly 页面。这对我们没有帮助,因为我们有多个 URL 需要反向代理到 wildfly 上的不同应用程序。

这不起作用。

server {
  listen       IP:80;
  server_name  www.abc.com;
    location / {
        proxy_set_header  Host $host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_pass http://IP:8080/app1/;
    }
}

这不起作用。

server {
  listen       IP:80;
  server_name  www.abc.com;
    location / {
        proxy_set_header  Host $host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_pass http://IP:8080/;
        root /var/www/www.abc.com/public_html;
        index  index.html;
    }
}

index.html 如下所示:

<html>
<head>
<meta http-equiv="Refresh" content="0;url=/app1/index.html">
<title>Index Redirect</title>
</head>
</body>
</html>

欢迎提出任何建议。

答案1

我有一个非常类似的程序正在运行,尽管我的后端是 JBoss,而不是 Wildfly。在相关部分,跳过我的 SSL 配置:

www1.example.com:

server {
    listen IP:80;
    server_name www1.example.com;
    location / {
        location /app1 {
            proxy_pass http://IP:8080/app1$request_uri;
            proxy_redirect http://IP:8080 http://www1.example.com;
            # proxy_set_header directives as needed
        }
    }
    location = / {
        return 301 http://www1.example.com/app1
    }
}

www2.example.com

# Like www1, but server_name www2.example.com and proxy paths set for app2.

我不知道这是否可以在向外界隐藏应用程序路径的同时发挥作用,但我怀疑只需将所有代理指令移动到location /并省略即可location = / {}

相关内容