nginx常用功能
一、反向代理
反向代理简介
反向代理是指代理服务器来接受连接请求,然后将请求转发给服务器,并将服务器上得到的结果返回给请求连接的客户端。反向代理是对服务端透明的,对客户端非透明的,客户端不知道访问的是代理服务器,而服务端知道代理服务器在为它代理。
配置实例
location /bd {
proxy_pass https://www.baidu.com/;
}
# 所有 /auth-api 下的接口访问都代理到本地的 8010 端口
# 例如你本地运行的 java 服务的端口是 8010,接口都是以 /api 开头
location /auth-api {
proxy_pass http://localhost:8010/auth-api;
}
二、HTTP服务器
HTTP服务器简介
nginx本身也是一个web服务器,可以使用nginx处理静态资源,使用反向代理处理动态资源,动态和静态的请求分开
静态配置实例
location / {
root /usr/local/share/html;
index index.html;
}
访问IP就会访问到/usr/local/share/html/index.html页面
动静分离配置实例
# 所有静态请求都由nginx处理,存放目录为 html
location ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {
root /usr/local/share/html;
expires 10h; # 设置过期时间为10小时
}
# 所有动态请求都转发给 tomcat 处理
location ~ \.(jsp|do)$ {
proxy_pass 127.0.0.1:8080;
}
访问.jsp|do文件时会访问到本机的tomcat服务8080端口上,访问.gif|jpg等文件时则访问到html存放的文件。
三、负载均衡
负载均衡简介
负载均衡就是nginx将请求按规则分摊到多个服务器上进行执行,减少单台服务器的压力。以下是负载均衡模式:
1、轮询(默认)
upstream gateway {
server localhost:8010;
server localhost:8011;
}
server {
listen 80;
server_name localhost;
location /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://gateway;
}
}
每个请求将按时间顺序逐一分配到不同的后端服务器,如果服务器无法访问,则自动剔除
2、权重
upstream gateway {
server localhost:8010 weight=7;
server localhost:8011 weight=3;
}
指定轮询几率,weight和访问时间成正比,服务器性能优越则权重配比越高,访问10次则7次8080,3次8011。
3、ip_hash
upstream gateway {
ip_hash;
server localhost:8010 weight=7;
server localhost:8011 weight=3;
}
每个请求安装发起客户端IP的hash结果进行匹配,同一个IP匹配一个服务器,有效解决了session的问题
4、fair( upstream_fair模块 )
upstream gateway {
ip_hash;
server localhost:8010 weight=7;
server localhost:8011 weight=3;
}
后端相应速度分配的请求,响应时间短则优先分配,响应时间长效率短分配到的请求少。
5、url_hash()
upstream gateway {
hash $request_url;
hash_method crc32;
server localhost:8010 weight=7;
server localhost:8011 weight=3;
}
按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在Nginx作为静态服务器的情况下提高缓存效率