2016-03-29 12 views
0

私たちは、nginxを使用してDMZウェブサーバーから内部ネットワークにトラフィックをリダイレクトするリバースプロキシを設定しようとしています。Nginx異なるサーバーへのリバースプロキシ

トラフィックが443で発生し、ApacheページのユーザーがLDAPサーバーにログインすると、トラフィックがapacheからnginxにリダイレクトされます(8089でリッスンしています)。 Nginxはそのトラフィックを内部ネットワークにプロキシし直します。

Apacheリダイレクトが機能し、nginxプロキシの少なくとも一部が動作しています。内部サーバー上のページが読み込まれますが、ページ上のすべてのリソースがURLを二重に追加しています。例:

https://webserver.us.com ==リダイレクト==> http://webserver.us.com:8089 == Nginx Proxy ==> http://internal.server.com: 8080 /ページ

のhttp://internal.server.com/page負荷が、ページ上のすべてのリソースは、としてロードしようとしている。

のhttp://internal.server.com/page/ページ/リソース。

直接内部ページを打つとき、彼らはもちろんのhttpである:

//internal.server.com:8080/page/resource私はproxy_passの私達の設定に誤りがあることを確信している、proxy_redirectおよびルート/場所が、私はそれを把握することはできません、次のように...

当社Nginx.confは次のとおりです。(FYIこれはSolarisサーバである)

worker_processes 1; 
pid  /var/run/nginx.pid; 

    events { 
     worker_connections 1024; 
    } 


    http { 
     include  mime.types; 
     default_type application/octet-stream; 
     sendfile  on;  
     keepalive_timeout 65; 




    server { 
     listen  8089; 
     server_name <internal.server.com>; 

     access_log /var/opt/csw/nginx/logs/access.log; 
     error_log /var/opt/csw/nginx/logs/error.log; 
     root http://<internal.server.com>:8080; 
     index index.html index.htm; 

     location/{ 
     proxy_pass http://<internal.server.com>:8080/<page>/; 
     proxy_redirect http://<internal.server.com>:8080/<page> http://<internal.server.com>:8080/<page>; 
     proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 
     proxy_buffering off; 
     proxy_set_header  Host   $host; 
     proxy_set_header  X-Real-IP  $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
     } 
    } 

    } 

私たちは "で何かを設定するたびにnginx 404を返す "/"以外の "location"パラメータ、エラーログには次のように表示されます。 "の/ var/opt/CSW/nginxの// RES_NOT_FOUND"

答えて

0

クライアントは、リバースプロキシを介してinternal.server.com:8080/page/に翻訳されwebserver.us.com/を要求します。

文書では/page/resourceのようなリソースURIが指定されているため、クライアントはwebserver.us.com/page/resourceと要求し、逆プロキシを介してinternal.server.com:8080/page/page/resourceに変換します。

最も簡単な解決策は、リバースプロキシを透過的にすることです。完全一致の場所を追加して、/をアプリケーションのエントリポイントにマップすることができます。

location =/{ 
    rewrite^/page/ last; 
} 
関連する問題