<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div>Hello, all<br></div><br>    I have a web application, which use nginx as frontend reverse-proxy sever. It's configured to use https to interact with user agent. Several tomcats are used as backend application servers. The connection between nginx and tomcats is http. The network structure is illustrated as following: <br>
</div><br>    Browser -- https --> nginx --- http --> tomcat1<br></div>                                            \-- http --> tomcat2<br><br></div>    The normal request works ok. Problem comes when my program  returns 302/Redirection to user agent. Since tomcat has no idea about https' environment, the location field in http response header is set as: "Location: <a href="http://redirect.url.com">http://redirect.url.com</a>". After receiving that, the browser will launch <span class="">subsequent</span> requests through http.<br>
</div><br>    Now I overcome this by redirecting all requests towards 80 to 443:<br><br>    server{<br>        listen 80;<br><br>        server_name  *.<a href="http://url.com">url.com</a>;<br>        rewrite ^(.*) https://$server_name$1 permanent;<br>
    }<br>    <br></div>    but this method has two obvious defects:<br></div>    1. the first request launch by use agent is still http, which will incur security.<br></div>    2. nginx rewrite module works by returning 301/Move Permanently, I think too much redirection between user agent and my application will result in poor efficiency.<br>
<br></div>    I wonder if there is some ready-made module to manipulate the 302 Location header, or any other better ways to workaround this problem.<br></div></div><div><div><div><div><div><div><br><br></div></div></div>
</div></div></div></div>