2016-10-09 20 views
1

こんにちは私は、Tomcatサーバー上で実行しているアプリケーションにリバースプロキシとして動作するようにnginxを設定しようとしています。私はHTTP経由で自分のアプリケーションにアクセスしようとすると、それが正常に動作しますが、私がhttpsそれを超えるアクセスしようとしたとき、私はここに502エラーNginx httpsリバースプロキシ別502

を取得しています私のnginxの設定ファイルを以下の

user www-data; 
worker_processes 4; 
pid /run/nginx.pid; 

events { 
    worker_connections 768; 
    # multi_accept on; 
} 


http { 
    sendfile on; 
    tcp_nopush on; 
    tcp_nodelay on; 
    keepalive_timeout 65; 
    types_hash_max_size 2048; 


    include /etc/nginx/mime.types; 
    default_type application/octet-stream; 


    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log notice; 


    gzip on; 
    gzip_disable "msie6"; 


    rewrite_log on; 

    server{ 
     ssl on; 
     listen 80; 
     listen 443 ssl; 
     server_name myapp.local; 

     ssl_certificate max.local.crt; 
     ssl_certificate_key server.key; 
     #ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; 
       #ssl_ciphers RC3:HIGH:!aNULL:!MD5; 
       #ssl_prefer_server_ciphers on; 
       ssl_session_timeout 5m; 
     keepalive_timeout 60; 



     error_log /var/log/nginx/hybris.log; 
     rewrite_log on; 

     set $my_port 9001; 
     set $my_protocol "http"; 

     if ($scheme = https){ 
      set $myport 9002; 
      set $my_protocol "https"; 
     } 


     location/{  
      if ($http_user_agent ~ "Chrome"){ 
       #just a proof of concept 
       return 301 http://$host/AE/en; 
      } 

      if ($http_user_agent ~ "Firefox"){ 
       #just a proof of concept 
       return 301 http://google.com/; 
      } 
     } 


     location /AE/en { 


      proxy_pass $scheme://10.0.2.2:$my_port; 
      proxy_set_header Host $host; 
     } 


     location ~(?:/..)?/_ui/(.*) { 
      proxy_pass http://10.0.2.2:9001/_ui/$1;  
      proxy_set_header Host $host; 
     } 



    } 

} 
+0

エラーログに何を伝えることができますか?なぜあなたはhttpsとhttpのserver_namesだけではないのですか? – Satys

答えて

1

あなたは、HTTPSを使用する場合ポートを変更したり、Tomcatサーバーに接続するためのスキームを作成することもできます。これは実際には意味がありません。バックエンドサーバーがローカルネットワーク内ではなく、別のデータセンターにある場合は、バックエンドサーバーに対してのみhttpsを使用します。それはあなたが$ my_portと$ my_protocolの定義を削除し、/ AEを変更/場所ブロックエン

location /AE/en { 
    proxy_pass http://10.0.2.2:9001; 
    proxy_set_header Host $host; 
} 
-1

にあれば、私はあなたが2つのサーバーセクションを作成する必要があると思う正常に動作する必要があります。 1つはポート80でリッスンし、もう1つはhttpsのポート453でリスンするためのものです。

関連する問題