tomcat知道haproxy是一个代理服务器吗?
关于HAProxy(1.5.2)和Tomcat(7.0.54),我有几个问题。我俩都是新来的 在Tomcat中,我有一个应用程序在登录时(https://my.tomcat.host:8080/access)将用户重定向(通过303代码)到另一个网页(http://my.tomcat.host:8080/access/sessionId=1234567). 设置HAProxy我将前端引擎(我的前端https)设置为接收https请求,并将它们发送到后端(我的后端https),然后后端将其作为http请求发送到tomcat服务器 这是haproxy.cfg(用于my.haproxy.host)的外观:tomcat知道haproxy是一个代理服务器吗?,tomcat,https,proxy,haproxy,Tomcat,Https,Proxy,Haproxy,关于HAProxy(1.5.2)和Tomcat(7.0.54),我有几个问题。我俩都是新来的 在Tomcat中,我有一个应用程序在登录时(https://my.tomcat.host:8080/access)将用户重定向(通过303代码)到另一个网页(http://my.tomcat.host:8080/access/sessionId=1234567). 设置HAProxy我将前端引擎(我的前端https)设置为接收https请求,并将它们发送到后端(我的后端https),然后后端将其作为ht
frontend my-frontend-https
bind *:8443 ssl crt /my/certs/server.pem
mode http
option httplog
default_backend my-backend-https
backend my-backend-https
balance roundrobin
mode http
option httplog
option forwardfor
server my-tomcat-srv my.tomcat.host:8080 check
在发送以下查询时(https://my.haproxy.host:8443/access)我发现从tomcat返回的位置标志的形式如下:http://my.haproxy.host:80/access/sessionId=1234567. 查看tomcat服务器,我发现我必须在server.xml中启用RemoteIPValve类,并将httpsServerPort设置为8443(作为protocolHeaderHttpsValue-可能不需要这样做,因为这是默认设置)。这似乎可行,我将向后端添加更多服务器
看起来不错,但我有几个问题:
哈罗德。这不是Tomcat特有的,但除非haproxy告诉你,否则你的Tomcat后端不会知道haproxy是前端 如果您正在运行nginx,以下是直接从我的配置:
proxy_set_header X-Forwarded-Proto https; # Obviously, differentiate based on whether you're serving an HTTP or HTTPS endpoint.
proxy_set_header Host $host; # Or hardcode a value.
proxy_set_header X-Real-IP $remote_addr; # Alternative to X-Forwarded-For.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
虽然我还没有为haproxy做过这件事,但正如我将nginx放在haproxy前面所说的那样,您将需要做如下操作:
# defaults section
option forwardfor
# frontend definition
frontend www-http
bind haproxy_www_public_IP:80
reqadd X-Forwarded-Proto:\ http
default_backend www-backend
frontend www-https
bind haproxy_www_public_IP:443 ssl crt /etc/ssl/private/example.com.pem
reqadd X-Forwarded-Proto:\ https
default_backend www-backend
# backend definition
backend www-backend
redirect scheme https if !{ ssl_fc }
server www-1 www_1_private_IP:80 check
server www-2 www_2_private_IP:80 check
这是假设Tomcat将引用标准ish字段X-Forwarded-Proto
和X-Forwarded-For