2017-11-20 5 views
2

私はkeycloakを初めて使用しています。私はローカルマシンでキークローズを実行し、この問題に直面しませんでした。まず、私はドッキング・ツールを使ってkeycloakサーバーを実行しています。ドッカー画像はjboss/keycloakから取得されます。私は管理コンソール上でクリックしたときにエラーHTTPS-REQUIREDを取得してしまったドッキングウィンドウのイメージを実行した後letsEncryptKeycloak docker nginx sslでHTTPS-REQUIRED

test.com自分のドメイン上を使用して、私の SSLを設定しています。 HERE HEREHEREから多くのことを読んだ後、私は自分のドメインでSSLが必要であることを知った。

また、私のドッカーコマンドでPROXY_ADDRESS_FORWARDING=trueを渡します。これが私の方法です。

docker run -e KEYCLOAK_USER=temp -e KEYCLOAK_PASSWORD=temp -e PROXY_ADDRESS_FORWARDING=true -p 9090:8080 jboss/keycloak 

私のnginxのサーバーのブロックは、私はそれがhttpsを持ってtext.comに行くか、www.test.comのSSL毎回設定することにより

map $sent_http_content_type $expires { 
    default     off; 
    text/html     epoch; #means no cache, as it is not a static page 
    text/css     max; 
    application/javascript  max; 
    application/woff2   max; 
    ~image/     30d; #it is only the logo, so maybe I could change it once a month now 
} 

server { 
    listen 80 default_server; 
    listen [::]:80 default_server; 


    root /var/www/html; 

    # Add index.php to the list if you are using PHP 
    index index.html index.htm index.nginx-debian.html; 

    server_name test.com www.test.com; 

    location/{ 
     # First attempt to serve request as file, then 
     # as directory, then fall back to displaying a 404. 
     try_files $uri $uri/ =404; 
    } 


    location /auth/ { 
      proxy_pass http://x.x.x.x:9090/auth/; 

      proxy_http_version 1.1; 

      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; 
    } 


     return 301 https://$server_name$request_uri; 
} 


server { 
    # SSL configuration 
    # 

    #listen 443 ssl http2 default_server; 
    listen 443 ssl default_server; 
    #listen [::]:443 ssl http2 default_server; # does not work properly with Angular, TODO research about this 
    listen [::]:443 ssl default_server; 

    expires $expires; 

    include snippets/ssl-test.com.conf; 
    include snippets/ssl-params.conf; 

} 

のように見えます。しかし、私がtest.com:9090をするとき、安全ではないと言います。だから、私はIP:9090を試してみるが、httpsを使わずに動作する。

私はIP:9090に行くたびにキークローズのメインページを見ることができますが、管理コンソールをクリックするとHTTPSが必要です。私の設定やkeycloak/ssl/nginxの設定で何が欠けていますか?

は主にこのsetup nginx for production

EDITに従っ::位置/ AUTH /第一から第二のサーバブロックを移動し、それが動作 。それが役に立つと思った。

+0

あなたはあなた自身の質問に答えることができます。これはあなたの質問に答えを記し、あなたに報酬として評判のポイントを与えます。 – MadMike

答えて

1

正しい構造

server { 
    listen 80 default_server; 
    listen [::]:80 default_server; 


    root /var/www/html; 

    # Add index.php to the list if you are using PHP 
    index index.html index.htm index.nginx-debian.html; 

    server_name test.com www.test.com; 

    location/{ 
     # First attempt to serve request as file, then 
     # as directory, then fall back to displaying a 404. 
     try_files $uri $uri/ =404; 
    } 





     return 301 https://$server_name$request_uri; 
} 


server { 
    # SSL configuration 
    # 

    #listen 443 ssl http2 default_server; 
    listen 443 ssl default_server; 
    #listen [::]:443 ssl http2 default_server; # does not work properly with Angular, TODO research about this 
    listen [::]:443 ssl default_server; 

    expires $expires; 
    location /auth/ { 
      proxy_pass http://x.x.x.x:9090/auth/; 

      proxy_http_version 1.1; 

      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; 
    } 
    include snippets/ssl-test.com.conf; 
    include snippets/ssl-params.conf; 

}