2017-09-12 3 views
0

要求パスに応じて異なるポートを持つホストマシン上で実行されている別のサーバーへのプロキシ要求にnginxを設定しようとしています。もう少し複雑なことに、すべてのアプリでsslを使用したいと思っています。言い換えれば、私は次のことを行うことがnginxの希望:NGINX:異なるポートを持つlocalhost上の複数のアプリケーションへのパスに基づくSSLプロキシ

私は今のところ(非常に動作していないもの)だ何
https://www.example.com/app1 --> http://localhost:8001 
https://www.example.com/app2 --> http://localhost:8002 
https://www.example.com/app3 --> http://localhost:8003 
... 

# redirecting from http to https 
server { 
    listen 80; 
    301 https://$host$request_uri; 
} 

# proxying path to port 
server { 
    listen 443; 
    ssl_certificate  /path/to/cert.pem 
    ssl_certificate_key /path/to/privkey.pem 
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers   HIGH:!aNULL:!MD5; 

    location /app1 { 
     proxy_pass http://localhost:8001 
    } 
    location /app2 { 
     proxy_pass http://localhost:8002 
    } 
    location /app3 { 
     proxy_pass http://localhost:8003 
    } 
} 

何が起こって終わることはnginxのは、1つの特定のアプリを公開するということです(それが最初にあった)。

私が間違っていることについてのアイデアは高く評価されます。ありがとう。あなたのブラウザ `/ app3`は最初それが動作し、残りの部分がない場合

+0

であなたの.CRT、.kryファイルをコピーします。作業?何がうまくいかない? –

+0

@TarunLalwani、はい、 '/ app3'のみが動作し、' https:// www.example.com/app1'を試してみると、 '.../app1'を得ることはできません。また、 'https:// www.example.com /'を試してみると '/ app3'と表示されます。 –

+0

あなたのアプローチがうまくいかず、アプリ自体がルートディレクトリで動作すると複雑になるのではないかと心配しているので、あなたは 'http:// localhost:8001/app1'のように動作する可能性はありますか? –

答えて

0

server { 
     listen 80 default_server; 
     listen [::]:80 default_server; 
     server_name _; 
     return 301 https://$host$request_uri; 
    } 

    server { 
     listen 443; 
     root /usr/share/nginx/html; 

     ssl on; 
     ssl_certificate /etc/nginx/ssl/demo.com.crt; 
     ssl_certificate_key /etc/nginx/ssl/demo.com.key; 

     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
     ssl_prefer_server_ciphers on; 
     ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";  

     chunked_transfer_encoding on; 

     location /app1 { 
     proxy_pass http://<private-ip>:8001 
     } 
     location /app2 { 
     proxy_pass http://<private-ip>:8002 
     } 
     location /app3 { 
     proxy_pass http://<private-ip>:8003 
     } 

    } 

であなたのnginc.confを交換しては、だからあなたの必要なフォルダ

+0

ジンナ、なぜあなたの言うことがうまくいくのか、なぜ私がしないのか説明できますか?ありがとう。 –

関連する問題