Nginx是一个高性能的http和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。目前很多网站都是用Nginx为网站提供反向代理和负载均衡服务,如百度、淘宝、京东。
1、正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
对正向代理而言,最终访问的服务器并不知道客户端的ip,只知道代理的ip
2、反向代理服务器位于用户和目标服务器之间,但对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获取到目标服务器的资源,用户不需要知道目标服务器的地址。反向代理服务器通常可用来作为web加速,即使用反向代理作为web服务器集群的前置机来降低网络和服务器的负载,提高访问效率。
对于反向代理,用户不知道他访问的服务器的实际IP,只知道代理服务器IP
反向代理的流程:
1)用户发送请求到服务器(实际上发送到反向代理服务器 Nginx,但是用户不知道)
2)反向代理服务器 Nginx分发请求到真正的服务器
3)真正的服务器将数据返回给反向代理服务器
4)反向代理服务器再将数据返回给用户
1、启动nginx : 在对应的目录下执行 ./start-nginx.sh
2、 Nginx配置文件:
cd /usr/local/nginx/conf Vim nginx.conf
3、http默认的端口号80,https默认端口443
4、nginx.conf配置文件中监听80端口,http的请求转发给其它服务器对应的端口比如8083、8088
配置监控端口80(即http请求)如下:
server {
listen 80; #默认监控的http的端口
server_name localhost;
location / {
root html;
index index.html index.htm;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
upstream模块配置转发其它服务器如下:
注意:upstream要设置在调用的server块之前定义
upstream ss_servers {
ip_hash;
server 192.168.1.241:8083 weight=1;
server 192.168.1.122:8088 weight=2;
}
负载类型:
1)轮询(默认):服务器轮流提供服务,通常用在不使用登录token 、session
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)权重(weight):weight和访问比率成正比,用于后端服务器性能不均的情况
upstream bakend {
server 192.168.1.241:8083 weight=1;
server 192.168.1.122:8088 weight=2;
}
3)IP哈希(ip_hash):用户第一次访问的是哪个服务器,就一直访问这个服务器,适合频繁登录的情况,可以解决session的问题。
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
4)响应时间(fair)(需要第三方插件):当前哪个服务器响应时间最少,就访问哪个服务器
upstream bakend {
fair;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
5)url哈希(url_hash)(需要第三方插件):根据用户访问的具体URl来分配服务器
6)最少连接方式(least_conn):当前哪个服务器的访问量少,就访问哪个服务器



