https请求Nginx转发给tomcat时变成http问题解决

目录

1. Nginx 配置

2.修改tomcat配置: 


1. Nginx 配置

upstream aaaaa_run {
	#weight  指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
	#ip_hash  每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
	#fair(第三方)  按后端服务器的响应时间来分配请求,响应时间短的优先分配。
	#url_hash(第三方)  按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
	
	#server 10.81.249.177:8080 weight=1 max_fails=3 fail_timeout=5s;
	#server 10.81.249.177:8081 weight=1 max_fails=3 fail_timeout=5s;
	server 127.0.0.1:8080 weight=1 max_fails=3 fail_timeout=5s;
	server 127.0.0.1:8081 weight=1 max_fails=3 fail_timeout=5s;
}

server {
	listen      80;
	server_name www.aaaaa.run;
	charset     utf8;

	#access_log  logs/access.log  main;

	proxy_headers_hash_max_size 1024;
	proxy_headers_hash_bucket_size 128;
	proxy_set_header Host $host;
	proxy_set_header X_Real_IP $remote_addr;
	proxy_set_header REMOTE_ADDR $remote_addr;

	proxy_set_header X-Forwarded-For $remote_addr;
	#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header Host $host;
	proxy_redirect   off;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";

	location / {
			#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
			proxy_next_upstream http_502 http_504 error timeout invalid_header;
			#proxy_cache cache_one;
			#对不同的HTTP状态码设置不同的缓存时间
			#proxy_cache_valid 200 304 12h;
			#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
			#proxy_cache_key $host$uri$is_args$args;
			#expires 1d;
			
			if ( $request_uri = "/" ) {
				rewrite (.*) http://www.aaaaa.run/portal.html break;
			}
			proxy_pass http://aaaaa_run;

	}

	location ~* .*\.(ico|gif|jpg|jpeg|png|bmp|swf|css|js)$ {
			#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
			proxy_next_upstream http_502 http_504 error timeout invalid_header;
			#proxy_cache cache_one;

			#对不同的HTTP状态码设置不同的缓存时间
			proxy_cache_valid 200 304 12h;
			#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
			proxy_cache_key $host$uri$is_args$args;
			expires 30d;
			access_log off;
			proxy_pass http://aaaaa_run;
	}

}
server {
	listen      443 ssl;
	server_name www.aaaaa.run;
	charset     utf8;
	
	access_log  logs/www.aaaaa.run_ssl.log;
	error_log logs/www.aaaaa.run_ssl_error.log;
	
	ssl on;
	ssl_certificate   /usr/local/nginx/conf/cert/www.aaaaa.run.pem;
    ssl_certificate_key  /usr/local/nginx/conf/cert/www.aaaaa.run.key;
	ssl_session_timeout 5m;
	
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

	ssl_prefer_server_ciphers   on;

	
	location /{
			#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
			proxy_next_upstream http_502 http_504 error timeout invalid_header;
			#proxy_cache cache_one;
			#对不同的HTTP状态码设置不同的缓存时间
			#proxy_cache_valid 200 304 12h;
			#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
			#proxy_cache_key $host$uri$is_args$args;
			#expires 1d;
			
			proxy_headers_hash_max_size 1024;
			proxy_headers_hash_bucket_size 128;
			proxy_set_header Host $host;
			proxy_set_header X_Real_IP $remote_addr;
			proxy_set_header REMOTE_ADDR $remote_addr;

			proxy_set_header X-Forwarded-For $remote_addr;
			#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto  $scheme;
			
			proxy_redirect   off;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection "upgrade";
			
			if ( $request_uri = "/" ) {
				rewrite (.*) http://www.aaaaa.run/portal.html break;
			}
			proxy_pass http://aaaaa_run;	
	}
	
	
	location ~* .*\.(ico|gif|jpg|jpeg|png|bmp|swf|css|js|html)$ {
			#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
			proxy_next_upstream http_502 http_504 error timeout invalid_header;
			#proxy_cache cache_one;

			#对不同的HTTP状态码设置不同的缓存时间
			proxy_cache_valid 200 304 12h;
			#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
			proxy_cache_key $host$uri$is_args$args;
			expires 30d;
			access_log off;
			proxy_pass http://aaaaa_run;
	}
}

 其中:

      proxy_set_header X-Forwarded-Proto  $scheme;    // 传输协议

 注意:

      注释掉:#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      因为微信支付的时候,获取ip 会异常,该属性是 转发进过的ip

<!--预支付订单-->
<xml>
	<sign>F7E6C6C17E0D74EC2D6854DD78EA3038</sign>
	<mch_id>1345752201</mch_id>
	<body>豪华大床房(无早)</body>
	<sub_appid>wxddc999b89a5c02a7</sub_appid>
	<total_fee>21900</total_fee>
	<spbill_create_ip>157.255.172.24, 113.92.32.80</spbill_create_ip>
	<sub_mch_id>1556365191</sub_mch_id>
	<sub_openid>oOcxvs2WaLOAGBPmjKovCdckyVaM</sub_openid>
	<notify_url>http://vip5.gshis.net/pay/wxnotify.json</notify_url>
	<appid>wx4cea1ae3f21c72e8</appid>
	<out_trade_no>137JD01000002963692</out_trade_no>
	<nonce_str>KlRC3u6SnSi3w</nonce_str>
	<trade_type>JSAPI</trade_type>
</xml>
<!--微信支付错误-->
<?xml version="1.0" encoding="UTF-8"?>
<xml><return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[invalid spbill_create_ip]]></return_msg>
</xml>

 

2.修改tomcat配置: 

     目录:/usr/local/tomcat0/conf/server.xml   

     行:137 新增

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

        <!--解决 https 重定向 http的问题-->
        <Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeaderHttpsValue="https" remoteIpHeader="X-Forwarded-For"
               protocolHeader="X-Forwarded-Proto" />

      </Host>

   添加:

<Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeaderHttpsValue="https" remoteIpHeader="X-Forwarded-For"
               protocolHeader="X-Forwarded-Proto" />

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值