Nginx 反向代理背后的密钥斗篷
我在一台服务器上安装了keydove standanlone,并尝试通过nginx在反向代理后使用它。 KeyClope绑定到127.0.0.1 这是我的nginx vhost配置:Nginx 反向代理背后的密钥斗篷,nginx,reverse-proxy,keycloak,Nginx,Reverse Proxy,Keycloak,我在一台服务器上安装了keydove standanlone,并尝试通过nginx在反向代理后使用它。 KeyClope绑定到127.0.0.1 这是我的nginx vhost配置: server { server_name auth.dp.net; location /auth { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Host
server {
server_name auth.dp.net;
location /auth {
proxy_pass http://localhost:8080;
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;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/auth.dp.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/auth.dp.net/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = auth.dp.net) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name auth.dp.net;
return 404; # managed by Certbot
}
但当我访问时,我会得到以下KeyClope错误:
Invalid parameter: redirect_uri
我的配置中有什么错误 一两个
/
,也许还有一个=
location /auth {
proxy_pass http://localhost:8080;
如果代理传递指令是裸的,即没有指定路径(如上所述),则整个请求路径将附加到代理传递url
因此,上面的配置将导致请求https://auth.dp.net/auth
被代理到http://localhost:8080/auth/
如果您添加了任何内容,即使只是在proxy pass指令中添加了一个斜杠,那么您添加的任何内容都将替换location指令中匹配的部分。因此,要将请求无路径地传递给代理,需要添加斜杠。因此,这可能会起作用:
location /auth {
proxy_pass http://localhost:8080/;
然而,由于Nginx喜欢在代理时添加一个尾随斜杠,如果请求url没有斜杠,它可能无法工作。因此,您可以通过将location指令更改为:
location = /auth {
或者您预计它将重写您的请求并将其更改为:
location /auth/ {
或者,如果你真的想成为一名职业选手,你可以创建两个完全相同的区块。一个带有=/auth
,另一个带有/auth/
这是因为:
- 如果使用
,则请求=/auth
将不匹配,因此不获取代理https://auth.dp.net/auth/
- 如果您使用
,它将同时适用于这两种/auth/
和https://auth.dp.net/auth
,但前者将触发Nginx内部重写以添加https://auth.dp.net/auth/
,从而有效地将身份验证请求的服务器负载增加一倍/