web-dev-qa-db-ja.com

Wildflyを使用したNginxリバースプロキシ

URL www.abc.comがあり、これは http:// IP:8080/app1/index.html wildfly-8.2.0.Finalで実行されています。同じwildflyインストールでポイントしたい別のURLwww.def.comがあります http:// IP:8080/app2/index.html

使用する場合:

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ページを取得することを意味します。 Wildfly上の異なるアプリにリバースプロキシする必要がある複数のURLがあるため、これは役に立ちません。

これは機能しませんでした。

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
hillel

バックエンドは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 = / {}を省略するだけで機能するのではないかと思います。

1
Andreas Turriff