Nginx重定向。众所周知的端点

Nginx重定向。众所周知的端点,nginx,web-applications,request,openid-connect,endpoint,Nginx,Web Applications,Request,Openid Connect,Endpoint,我有一个在WSGI服务器上运行的web应用程序。应用程序具有OpenID Connect标识提供程序终结点,例如: /oidc/.well-known/openid-configuration /oidc/.well-known/simple-web-discovery /oidc/.well-known/webfinger 对这些端点的请求映射到我的项目中的某些函数,这些函数为每个端点运行必要的任务。我可以运行我的应用程序,所有请求都被定义的函数成功地映射和处理 当我在https后面的公共I

我有一个在
WSGI
服务器上运行的web应用程序。应用程序具有OpenID Connect标识提供程序终结点,例如:

/oidc/.well-known/openid-configuration
/oidc/.well-known/simple-web-discovery
/oidc/.well-known/webfinger
对这些端点的请求映射到我的项目中的某些函数,这些函数为每个端点运行必要的任务。我可以运行我的应用程序,所有请求都被定义的函数成功地映射和处理

当我在https后面的公共IP上托管我的应用程序时,挑战就开始了。为此,我使用
nginx
代理访问我的应用程序
nginx
使我的应用程序可以通过https通过公共IP访问。以下是我的
nginx
config文件的关键部分:

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;
    }
}
除了请求
/.well-known/*
(实际上
位置~/\.well-known{allow all;}
在配置中试图解决它)之外,每个调用都被正确地请求/发布,对此我会得到
404
403
错误

例如,
nginx
错误日志中的一条错误消息显示:

open()

(IP地址被屏蔽)

几点:

  • 我使用
    sudo
    权限运行我的应用程序,因此应用程序具有对所有路径的r/w访问权限
  • 实际上,路径
    /home/user/myApp/oidc/.well-known/openid配置
    不存在(这就是为什么我还得到
    404
    错误)

/oidc/。众所周知的/openid配置
应该映射到函数(当我在没有
nginx的情况下托管应用程序时会发生这种情况)。所以,我不明白为什么
nginx
试图访问一个不存在的
/oidc/.well/*
路径/文件

问题在于设置
位置~/\。众所周知的{allow all;}


这应该被删除。此外,设置
包括/etc/nginx/default.d/*.conf
包括一个默认配置文件,该文件还具有设置
位置~/\。众所周知的{allow all;}
。此设置也应从该文件中删除

位置~/\.众所周知的
使
nginx
查找本地文件。不知道你为什么加上它。在添加位置块之前发生了什么?我得到了相同的错误(404/403);该行是根据此处的描述添加的: