2017-05-11 1 views
0

WSGI 서버에서 실행되는 웹 응용 프로그램이 있습니다. 응용 프로그램은 예를 들어, 오픈 ID 연결 ID 제공자 엔드 포인트가 있습니다 :이 엔드 포인트에Nginx는 잘 알려진 엔드 포인트를 리디렉션합니다.

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

요청은 각 엔드 포인트에 필요한 작업을 실행하는 내 프로젝트에서 일부 기능에 매핑됩니다. 내 응용 프로그램을 실행할 수 있으며 모든 요청이 정의 된 함수에 의해 성공적으로 매핑되고 처리됩니다.

https 뒤에있는 공개 IP에서 내 애플리케이션을 호스팅 할 때 문제가 발생합니다. 이를 위해 내 응용 프로그램에 대한 프록시 액세스에 nginx을 사용합니다. nginx은 https를 통한 공용 IP를 통해 내 응용 프로그램에 액세스 할 수있게합니다. 나도 얻을 수있는 (그것을 해결하려는 시도는 설정에서 실제로 location ~ /\.well-known { allow all; }한다), /.well-known/*에 요청을 제외하고 모든 호출이 제대로 게시/요청

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

: 여기 내 nginx config 파일의 핵심 부분입니다 404 또는 403 오류 예를 들어

, nginx 오류 로그에 하나의 오류 메시지가 읽

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; }입니다. 이 설정은 해당 파일에서도 제거해야합니다.

관련 문제