目录
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 "%r" %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" />