2017-05-11 5 views
0

私はWSGIサーバで動作するWebアプリケーションを持っています。アプリケーションは、例えば、OpenIDの接続IDプロバイダエンドポイントがあります。これらのエンドポイントへNginxはよく知られているエンドポイントをリダイレクトします

/oidc/.well-known/openid-configuration 
/oidc/.well-known/simple-web-discovery 
/oidc/.well-known/webfinger 

要求は、各エンドポイントのために必要なタスクを実行する私のプロジェクトでは一部の機能にマッピングされています。私は自分のアプリケーションを実行することができ、すべての要求は、定義された機能によって正常にマッピングされ、処理されます。

httpsの後ろのパブリックIPでアプリケーションをホストすると、チャレンジが開始されます。このため私はnginxを使用してアプリケーションへのアクセスをプロキシします。 nginxは、私のアプリケーションをhttps上のパブリックIP経由でアクセス可能にします。ここに私のnginx設定ファイルのキーセクションです:

server { 
    listen  80; 
    listen  [::]:80 default_server; 
    server_name localhost; 
    root   /home/user/myApp; 
    include /etc/nginx/default.d/*.conf; 
    location/{ 
     proxy_pass http://my_app; 
     proxy_set_header X-Forwarded-Host $host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-URL-SCHEME https; 
    } 
} 

server { 
    listen  443 ssl; 
    server_name localhost; 
    root   /home/user/myApp; 
    ssl_certificate /home/user/cacert.pem; 
    ssl_certificate_key /home/user/privkey.pem; 
    include /etc/nginx/default.d/*.conf; 
    location ~ /\.well-known { allow all; } 
    location/{ 
     proxy_pass http://my_app; 
     proxy_set_header X-Forwarded-Host $host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-URL-SCHEME https; 
    } 
} 

すべてのコールが要求されている/私はどちらかの取得そのため、(実際にはconfigにlocation ~ /\.well-known { allow all; }はそれを解決しようとする試みである)/.well-known/*への要求を除いて、正しく投稿404または403のエラーです。例えば

nginxエラーログ内の1件のエラーメッセージが読み:

open() "/home/user/myApp/oidc/.well-known/openid-configuration" failed (13: Permission denied), client: X.X.X.X, server: localhost, request: "GET /oidc/.well-known/openid-configuration HTTP/1.1", host: "X.X.X.X"

(IPアドレスがマスクされている)

いくつかのポイント:

  • 私は私を実行していますアプリケーションはsudo特権を持つので、アプリケーションはすべてのパスにr/wアクセスできます。
  • 実際には、/home/user/myApp/oidc/.well-known/openid-configurationというパスは存在しません(それで、私も404エラーが発生します)。

/oidc/.well-known/openid-configurationは関数にマップする必要があります(nginxを付けずにアプリケーションをホストすると起こります)。だから、なぜnginxが存在しない/oidc/.well-known/*パス/ファイルにアクセスしようとしたのか分かりません。

+0

'location〜/ \。well-known 'は、' nginx'がローカルファイルを探すようにします。なぜあなたがそれを追加したのか分かりません。その場所ブロックを追加する前に何が起こったのですか? –

+0

私は同じエラー(404/403)を受け取りました。 https://community.letsencrypt.org/t/404-on-well-known-acme-challenge/15565/9に記載されている行に基づいてその行が追加されます – Hamed

答えて

0

問題は設定location ~ /\.well-known { allow all; }です。

これは削除する必要があります。さらに、設定include /etc/nginx/default.d/*.conf;には、デフォルトの設定ファイルが含まれており、その設定ファイルの設定はlocation ~ /\.well-known { allow all; }です。この設定もそのファイルから削除する必要があります。

関連する問題