Nginx专为性能优化而开发,代码质量非常高,代码很规范,手法成熟,模块扩展也很容易.
主配置文件主要有以下几大块:
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。epoll
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
nginx代理服务器的类型:
1、正向代理服务器(标准代理服务器)
目的:内网的服务器通过代理服务器,然后能够访问外网的服务器
原理:内网用户将请求发给代理服务器,代理服务器根据用户需求,向真正的web服务器发出请求,然后获取到网页内容之后,在本地缓存然后发给用户。
缺点:需要用户对浏览器进行设置
2、透明代理服务器
目的和原理与正向代理服务器一致,但一般布署在网关上,用户不需要再对浏览器进行设置
需要结合iptables
3、反向代理服务器(反向加速服务器)
目的:外网客户端通过代理服务器,能够访问内网服务器的资源
原理:外网客户端访问正常的域名或者IP,其实访问的是代理服务器,代理服务器帮助客户端请求页面,在代理服务器上缓存,然后再发送给客户端。
负载均衡调度策略:
轮循:后端每台服务器的权重相同
加权轮循:在每台服务器上加入权值,权值越高的服务器分配到的请求越多
ip_hash: 把同一客户端的请求调度到同一台真实服务器上
nginx 如何配置能够获取用户的真实ip?
nginx+(apache|nginx) ,web服务器获取客户端真实IP
代理服务器:
location / {
#root html;
#index index.html index.htm;
proxy_pass http://webs;
proxy_set_header X-Real-ip $remote_addr;
}
WEB服务器:
apache:
LogFormat "%{X-Real-ip}i%l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
nginx:
安装real-ip模块
location / {
root html;
index index.html index.htm;
set_real_ip_from 10.10.10.11;
real_ip_header X-Real-ip;
}
防盗链:
盗链:如果该服务器上只包含了网页的文本内容,而没有存储相关的图片资源,而是将图片资源链接到了其他站点的服务器上去了,这就形成了盗链问题
防盗链:我们通过检测Referer头域中的值判定是不是自己站点内的URL,是的话就采取阻止措施,实现防盗链。
配置防盗链:Nginx的ngx_http_referer_module模块中提供了一个指令valid_referers,用来获取Referer头域中的值并根据该值的情况给Nginx全局变量$invalid_referer赋值。 如果Referer头域中没有符合valid_referers指令配置的值,$invalid_referer 变量将会被赋值为1。
Nginx平滑升级:
1. 编译新版:解压,进入目录下,预编译和编译
2. 用新编译的命令替换原来的命令(最好先备份)
3. 启用新的,关闭旧的
网友评论