开发者

nginx HttpProxyModule configuration help

开发者 https://www.devze.com 2023-01-26 04:04 出处:网络
I am trying to use nginx to enforce basic authentication before allowing access to the H2 database web console. This console is running on https://localhost:8084

I am trying to use nginx to enforce basic authentication before allowing access to the H2 database web console. This console is running on https://localhost:8084

In my nginx.conf, I have:

 location /h2 {
   auth_basic "Restricted";
   auth_basic_user_file htpasswd;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto https;
   proxy_pass https://localhost:8084/;
 }

What I want it to do is proxy requests for /h2 to H2's webserver. This configuration works for the first request, however the H2 server immediately sends a HTTP redirect for "/login.jsp" which is getting sent to my browser as "/login.jsp" and not "/h2/login.jsp". This means that when my browser requests the page, the request fails because only urls at location "/h2" get passed to the H2 webserver.

How can I append "/h2" to any redirects returne开发者_StackOverflow中文版d by the H2 webserver? I tried the following:

proxy_redirect https://localhost:8084/ https://$host/h2;

but it didnt do anything.


This seems to be a nginx config problem. Try location /h2/ (with trailing slash) instead of location /h2 in the nginx.conf. And then connect to http://localhost/h2/. You don't need any reverse-proxy config, as the H2 Console tool doesn't use absolute URLs (it redirects goes to "login.jsp" and not to "/login.jsp"). The problem is that http://localhost:/h2 is a 'file name', whereas http://localhost:/h2/ is a 'directory'.

0

精彩评论

暂无评论...
验证码 换一张
取 消