要解决Nginx作为HTTPS代理时访问HTTP后端服务器而导致的HTTP重定向问题,你需要确保Nginx正确配置以支持HTTPS到HTTP的代理,同时后端的Tomcat服务器也需要配置为接受HTTP请求。
以下是Nginx配置的示例:
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/your/certificate.pem;
ssl_certificate_key /path/to/your/private.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://your_backend_server; # 假设Tomcat监听8080端口
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;
}
}
确保Tomcat服务器的server.xml
配置文件中的Connector
监听HTTP(通常是8080端口),而不是HTTPS。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
如果你的后端服务器需要处理HTTPS请求,那么你需要配置Tomcat以接受SSL连接,并且确保它有有效的SSL证书。
这样配置后,Nginx将作为HTTPS的代理服务器,将加密的流量转发到Tomcat的HTTP服务上。如果Tomcat需要处理HTTPS流量,确保已经正确配置了SSL,并且证书有效。这样,你就可以通过HTTPS访问你的Nginx代理,而无需被重定向到HTTP。