下载
nginx
下载地址:http://nginx.org/en/download.html
稳定版本:1.12.2zlib
下载地址:https://sourceforge.net/projects/libpng/files/zlib/
gzip模块需zlib库pcre
下载地址:https://sourceforge.net/projects/pcre/files/pcre/
rewrite模块需pcre库openssl
下载地址:https://www.openssl.org/source/openssl-1.0.2n.tar.gz
ssl功能需openssl库
指定这个版本1.0.2n,因为下载了最新版本安装时报错
预编译环境
- 安装make:
yum -y install gcc automake autoconf libtool make - 安装g++:
yum install gcc gcc-c++
安装
- 安装zlib
cd /usr/local/src
tar -zxvf /usr/local/setup/nginx/zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install
- 安装pcre
cd /usr/local/src
tar -zxvf /usr/local/setup/nginx/pcre-8.42.tar.gz
cd pcre-8.42
./configure
make
make install
- 安装openssl
cd /usr/local/src
tar -zxvf /usr/local/setup/nginx/openssl-1.0.2n.tar.gz
cd openssl-1.0.2n
./config
make
make install
- 安装nginx
cd /usr/local/src
tar -zxvf /usr/local/setup/nginx/nginx-1.12.2.tar.gz
cd nginx-1.12.2
======在./configure时注意修改zlib、pcre、openssl版本号:
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.42 --with-zlib=/usr/local/src/zlib-1.2.11 --with-openssl=/usr/local/src/openssl-1.0.2n
make
make install
操作命令
启动
/usr/local/nginx/nginx检查配置
/usr/local/nginx/nginx -t平滑重启(修改配置文件后,可使用此命令重启,不影响运行) /usr/local/nginx/nginx -s reload
结束nginx(待nginx进程执行任务完毕后退出)
/usr/local/nginx/nginx -s quit直接退出nignx
/usr/local/nginx/nginx -s stop
nginx配置详解
参考:
https://blog.youkuaiyun.com/denghonghao/article/details/79620454
https://blog.youkuaiyun.com/yougoule/article/details/78186138
http://www.runoob.com/linux/nginx-install-setup.html
多tomcat 80端口共享配置
nginx.conf配置信息如下:
server {
listen 80;
server_name a1.xxx.com;
location / {
proxy_pass http://a1.host:8080/;
}
}
server {
listen 80;
server_name a2.xxx.com;
location / {
proxy_pass http://a2.host:8080/;
}
}
server {
listen 80;
server_name b1.xxx.com;
location / {
proxy_pass http://b1.host:8081/;
}
}
注解:
a、b两个tomcat分别使用端口8080和8081。a tomcat发布2个应用分别使用host:name为a1.host和a2.host; b tomcat发布1个应用 host:name 为b1.host。
3个server分别监听 a1.xxx.com、a2.xxx.com、b1.xxx.com 的80端口,反向代理
a1.host:8080、 a2.host:8081、b1.host:8080。其中相应的a1.xxx.com与a1.host可以一样,总之目的是客户端使用80端口访问服务器上的8080和8081端口。
nginx实现负载均衡
nginx.conf配置如下:
server {
listen 80;
server_name www.xxx.com;
location / {
proxy_pass http://balance_serveralias;
}
}
upstream balance_serveralias {
#ip_hash;
server 192.168.10.129:8080 weight=1;
server 192.168.10.130:8080 weight=2;
}
注解:
server_name指定了客户端访问地址,balance_serveralias 只是别名,没有实际意义
- -
常见模式
- 轮询(默认),每个请求按时间顺序逐一分配到不同的负载服务器,如果负载服务器down掉,能自动剔除。
upstream serveralias {
server 192.168.10.129:8080;
server 192.168.10.130:8080;
}
- 权重,指定轮询几率,weight比例决定访问几率,将配置较好的机器配更高的权重,默认权重为1。
upstream serveralias {
server 192.168.10.129:8080 weight=1;
server 192.168.10.130:8081 weight=2;
}
- ip_hash,将客户端ip通过hash算法匹配固定的一台服务器,这是唯一一种能保证session同步的模式;其他模式下只有第一次访问的机器保存有用户的session信息,需要添加session共享组件。
upstream serveralias {
ip_hash;
server 192.168.10.129:8080;
server 192.168.10.130:8081;
}
- fair,需要添加第三方插件,按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream serveralias {
server 192.168.10.129:8080;
server 192.168.10.130:8081;
fair;
}
- url_hash,需要添加第三方插件,按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream serveralias {
server 192.168.10.129:8080;
server 192.168.10.130:8081;
hash $request_uri;
hash_method crc32;
}
设备状态参数设置
- weight 权重
- down 表示这台机器暂时不参与负载
- backup 灾备,在其他机器忙或者down的情况下使用注意事项
参与负载的服务器名使用ip加端口的形式指定,域名也可以,但会被先解析成ip地址再参与负载。如tomcat指定localhost:8080访问a目录,hostalias:8080访问目录b,参与负载的机器即使配置为hostalias:8080,最终访问的还是目录a(即localhost:8080)常见问题
出现nginx.pid找不到的情况时,重新指定nginx.conf位置 /usr/local/nginx/nginx -c /usr/local/nginx/nginx.conf