默认目录
- /var/www/html
- /usr/share/nginx/html
配置站点跳转
jame-zhang 跳转到 www.jame-zhang.top
1
2
3
4
5server{
listen 80;
server_name jame-zhang.top;
return 301 https://www.jame-zhang.top$request_uri;
}http跳转到https
1
2
3
4
5
6
7server {
listen 80;
listen [::]:80;
root /var/www/html;
server_name www.jame-zhang.top;
rewrite ^(.*)$ https://$host$1 permanent;
}
## 配置多个站点和端口
编辑
/etc/nginx/site-enabled/default
文件,添加如下代码
1 | server { |
负载均衡
Nginx不仅可以作为一个Web服务器或反向代理服务器,还可以按照权重、轮询、ip hash、URL hash等多种方式对后端服务器的负载均衡
什么是负载均衡
负债均衡(load balance)就是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带来更好的体验。
负载均衡的配置
通过Nginx中的upstream指令可以实现负载均衡,在该指令中能够配置负载服务器组。目前负载均衡有4中典型的配置方式,分别为轮询方式、权重方式、ip_hash方式,以及利用第三方模块的方式。
- 轮询方式:负载均衡默认设置方式,每个请求按照时间顺序逐一分配到不同的后端服务器进行处理,如果有服务器宕机,会自动剔除
- 权重方式:利用weight指定轮询的权重比例,与访问率成正比,用于后端服务器性能不均的情况
- ip_hash方式:每个请求按访问IP的hash结构分配,这样可以使每个访客固定访问一个后端服务器,可以解决Session共享的问题
- 第三方模块:第三方模块采用fair时,按照每台服务器的响应时间来分配请求,响应时间段的优先分配;若第三方模块采用url_hash时,按照访问url的hash值来分配请求
在upstream置顶的服务器组中,若每个服务器的权重都设置为1(默认值)时,表示当前的负载均衡为轮询方式轮询方式负载均衡
准备3台服务器(可用虚拟机),全部安装Nginx,IP自己配置或者由系统自动配置,其中一台作为负载均衡服务器,另外两台作为后端Web服务器。
配置轮询负载均衡:
1 | # 配置域名为nginx.example.com的虚拟主机 |
需要注意的是:当Nginx检测到后端服务器宕机时,则会在负载均衡服务器自动删除该服务器。
加权轮询负载均衡
如果负载均衡服务器组中的服务器硬件配置强弱不易,则可以通过weight参数设置权重大小,对于配置较好的服务器,可以设置较高的权值,配置较差的服务器,设置较小的权值,通过加权轮询,可以让每台服务器承担与之硬件配置相符的工作量,从而在整体上发挥最佳的效果。
与上面配置类似,将其调整为权值轮询。
1 | upstream web_server{ |
其中每台服务器负载均衡调度状态设置可以单独设定,参数如下:
- max_fails:允许请求失败的次数,默认为1,当操作最大次数时,返回proxy_next_upstream指令定义的错误
- fail_timeout:在经历了max_fails次失败后,暂停服务的时间。且在实际应用中max_fails一般与fail_timeout一起使用
- backup:预留的备份机器
- down:表示当前的server暂时不参与负载均衡
当设置为backup的服务器,只有当所有的非backup机器出现故障或者忙碌的情况下,才会请求backup服务器,因此这台服务器的压力最小
1 | upstream web_server{ |
ip_hash方式负载均衡
按照IP的hash进行分配,每个IP固定访问一台服务器,能够有效解决Session的共享问题。
1 | upstream web_server{ |
注意:ip_hash方式处理负载均衡时,不能使用weight和backup设置,同时这种方式可能会导致有些服务器请求少,有些请求比较多,所以只有在必要情况才采用该方式。
利用第三方模块
第三模块提供很多方式,下面以fair方式为力,按照Web服务器的响应时间实现负载均衡,响应时间段的优先分配,具体实现步骤如下:
- 备份已安装Nginx
由于使用第三方模块需要重新编译Nginx,所以在此之前,需要关闭已经开起的Nginx进程,对已经安装好的Nginx进行备份,便于恢复。
1 | cp -r /usr/local/nginx /usr/local/nginx_old |
- 重新编译安装Nginx
github上下载fair模块,放到root目录下,重命名,如下
1 | unzip nginx-upstream-fair-master.zip |
下载Nginx源码,进入解压目录,在编译选项添加nginx-upstream-fair
模块的支持
1 | cd nginx-1.2.7/ #这里是你下载的nginx的源码解压后的目录 |
- 配置fair的负载均衡
1 |
|
缓存配置
待续
参考:
- Nginx 高性能Web服务器实战教程 - 黑马程序员