yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
PCRE 作用是让 Nginx 支持 Rewrite 功能。
1、下载 PCRE 安装包:
# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
2、解压安装包:
# tar zxvf pcre-8.35.tar.gz
3、进入安装包目录
# cd pcre-8.35
4、编译安装
# ./configure
# make && make install
5、查看pcre版本
# pcre-config --version
1、下载 Nginx
[root@bogon src]# wget http://nginx.org/download/nginx-1.6.2.tar.gz
2、解压安装包
# tar zxvf nginx-1.6.2.tar.gz
3、进入安装包目录
# cd nginx-1.6.2
4、编译安装
# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/root/pcre-8.35
# make
# make install
/usr/local/nginx是nginx要 安装的目录
/root/pcre-8.35是刚刚pcre安装目录需要调整
5、查看nginx版本
# /usr/local/nginx/sbin/nginx -v
6、启动服务测试
# /usr/local/nginx/sbin/nginx
7、更多命令
/usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx
pkill nginx# 强制关闭
安装后nginx的配置文件位于 /usr/local/nginx/conf/nginx.conf
Nginx负载均衡是通过upstream模块来实现的,内置实现了三种负载策略。
官网负载均衡配置说明:http://nginx.org/en/docs/http/load_balancing.html
· 轮循(默认)
Nginx根据请求次数,将每个请求均匀分配到每台服务器
· 最少连接
将请求分配给连接数最少的服务器。Nginx会统计哪些服务器的连接数最少。
· IP Hash
绑定处理请求的服务器。第一次请求时,根据该客户端的IP算出一个HASH值,将请求分配到集群中的某一台服务器上。后面该客户端的所有请求,都将通过HASH算法,找到之前处理这台客户端请求的服务器,然后将请求交给它来处理。
http {
upstream tomcats {
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
server {
listen 80;
location / { proxy_pass http://tomcats; }
} # ... 省略其它配置 }
· proxy_pass http://tomcats:表示将所有请求转发到tomcats服务器组中配置的某一台服务器上。
· upstream模块:配置反向代理服务器组,Nginx会根据配置,将请求分发给组里的某一台服务器。tomcats是服务器组的名称。
upstream模块下的server指令:配置处理请求的服务器IP或域名,端口可选,不配置默认使用80端口。通过上面的配置,Nginx默认将请求依次分配给100,101,102来处理,可以通过修改下面这些参数来改变默认的分配策略:
weight :默认为1,将请求平均分配给每台server。
upstream tomcats {
server 192.168.0.100:8080 weight=2; # 2/6次
server 192.168.0.101:8080 weight=3; # 3/6次
server 192.168.0.102:8080 weight=1; # 1/6次
}
fail_timeout :默认为10秒。某台Server达到max_fails次失败请求后,在fail_timeout期间内,nginx会认为这台Server暂时不可用,不会将请求
upstream tomcats {
server 192.168.0.100:8080 weight=2 max_fails=3 fail_timeout=15;
server 192.168.0.101:8080 weight=3;
server 192.168.0.102:8080 weight=1;
}
backup :备份机,所有服务器挂了之后才会生效
upstream tomcats {
server 192.168.0.100:8080 weight=2 max_fails=3 fail_timeout=15;
server 192.168.0.101:8080 weight=3;
server 192.168.0.102:8080 backup;
}
在100和101都挂了之前,102为不可用状态,不会将请求分配给它。只有当100和101都挂了,102才会被启用。
max_conns :限制分配给某台Server处理的最大连接数量,超过这个数量,将不会分配新的连接给它。默认为0,表示不限制。注意:1.5.9之后的版本才有这个配置
upstream tomcats {
server 192.168.0.100:8080 max_conns=1000;
}
表示最多给100这台Server分配1000个请求,如果这台Server正在处理1000个请求,nginx将不会分配新的请求给到它。
假如有一个请求处理完了,还剩下999个请求在处理,这时nginx也会将新的请求分配给它。
resolve :将server指令配置的域名,指定域名解析服务器。需要在http模块下配置resolver指令,指定域名解析服务
http {
resolver 10.0.0.1;
upstream u {
zone ...;
... server example.com resolve;
}
}
Nginx使用oss上的静态文件配置
阿里云的文档有说:同一个节点的ECS和OSS可以通过内网通信,内网的流量是免费的。
可以通过nginx反向代理的方式,通过内网访问OSS中的内容。
具体的配置如下:
upstream ossproxy {
server oss-cn-beijing-internal.aliyuncs.com; #OSS的内网地址
}
修改访问的静态文件路径:如下
location /static {#修改为使用oss中的static
proxy_pass http://ossproxy;
proxy_redirect off;
proxy_set_header Host youkou.oss-cn-beijing-internal.aliyuncs.com;#Host要修改为OSS的域名或OSS控制台绑定的域名,否则OSS无法识别会报错
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}