我有一个标准的反向代理,使用nginx和Tomcat 8。
我希望nginx处理加密,但仍然通知tomcat连接是否安全。
我有过
location /{
listen 80;
proxy_pass http://backend:8080;
}
location /{
listen 443 ssl;
proxy_pass https://backend:8443;
}tomcat有以下配置:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="false" scheme="https" secure="true" clientAuth="false" URIEncoding="UTF-8"/>不管怎么说我都错了
SSL_do_handshake() failed (SSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol) while SSL handshaking to upstream, client: 185.3.147.237, server: backing, request: "GET /favicon.ico HTTP/1.1", upstream: "https://127.0.0.1:8443/favicon.ico", host: "我如何告诉nginx,即使地址以https开头,也没有加密到后端的连接?
发布于 2016-09-25 14:27:55
Tomcat配置有SSLEnabled=false。因此,Tomcat在8443端口上侦听标准HTTP,而nginx无法连接到它。
我将实现这一点,以便使用Tomcat的单个上游端口,并设置包含SSL状态的HTTP报头。就像这样:
server {
listen 80;
listen 443 ssl;
server_name example.com;
proxy_set_header X-SCHEME $scheme;
proxy_pass http://backend:8080;
}此服务器块接收到http和https,将所有请求传递给Tomcat http后端,并设置一个标头X-SCHEME,即http或https。那么你的后台就有你想要的信息了。
https://serverfault.com/questions/805202
复制相似问题