Nginx通过二级目录(路径)映射不同的反向代理,规避IP+端口访问
//负载均衡调度算法
upstream tomcat_server {
//每个请求按照发起客户端ip的hash结果进行匹配,这样的算法每一个固定的ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
ip_hash;
server 172.16.125.76:8077 down;
//智能调整调度算法,动态的根据后端服务器的请求处理器的请求处理响应的时间来进行均衡分配,响应时间短,处理效率高的服务器分配到请求的概率高,响应时间长,处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。
//但是需要注意的是nginx默认不支持fair算法,如果要使用这种算法,需要安装upstream_fair模块。
server 172.16.0.18:8066 max_fails=3 fail_timeout=30s;
server 172.16.0.18:8077 backup;
//weight参数表示权重,权重越高,被分配到的概率越大
server 192.168.126.12:8080 weight=1;
server 192.168.126.13:8080 weight=1;
}
//监听8080端口,根据请求oa/xw转发到不同端口
server{
charset utf-8;
listen 8080;
server_name localhost;
location ~ /oa/ {
proxy_pass http://localhost:8081;
}
location ~ /xw/ {
proxy_pass http://localhost:8082;
}
//配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理
location ~ .*.jsp$ {
proxy_pass http://tomcat_server;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
//配置Nginx处理静态图片请求
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /usr/local/nginx/html/xiaoxu;
expires 10d;
}
}
location 指令语法说明如下:
1、=:用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。