安装
依赖
如果依赖没有安装,需要安装下面依赖,不然安装过程会报错。
- PCRE库
- zlib库
- ssl
安装nginx
wget -c https://nginx.org/download/nginx-1.16.0.tar.gz
tar -zxvf nginx-1.16.0.tar.gz
cd nginx-1.16.0
./configure --prefix=/software/nginx (这个步骤可以指定参数)
make
make install
启动与停止
启动
./nginx 启动
./nginx -c /usr/local/nginx/conf/nginx.conf 启动并重新载入配置文件
./nginx -s reload 重启并重新载入默认配置文件
./nginx -s reopen 重启
停止
./nginx -s quit(建议使用)此方式停止步骤是待nginx进程处理任务完毕进行停止
./nginx -s stop 停止
负载均衡
概念
nginx的反向代理
:就是将请求发送给nginx,然后将请求转发给后端服务器,后端服务器处理完毕之后将结果再发给nginx,nginx再把结果发送给客户端。后端服务器可在远程也可在本地,也可以是nginx服务器内部定义的其他虚拟主机。这些接收nginx转发的服务器被称为上游(upstream)
负载均衡
(LoadBalancer)是指把用户访问的流量,通过「负载均衡器」,根据某种转发的策略,均匀的分发到后端多台服务器上,后端的服务器可以独立的响应和处理请求,从而实现分散负载的效果。负载均衡技术提高了系统的服务能力,增强了应用的可用性
安装tomcat
这里使用两个tomcat测试,下载两个tomcat8并解压,修改tomcat的端口号(修改server.xml文件,需要修改三个地方)。假设tomcat-1和tomcat-2端口分别为8080和8081,然后在两个tomcat里面分布发布项目,启动tomcat。
配置nginx
修改配置文件
- 全局块:nginx服务器的配置信息
- events块:主要影响nginx服务器与用户的网络连接,
- http块:代理缓存和日志定义绝大多数功能和第三方模块的配置可以放这
- server块:每个server相当于一台虚拟主机,它内部可以有多台主机联合提供服务,一起对外提供在逻辑上关系密切的一组服务
- location:基于nginx服务器接收到的请求字符串,对除虚拟主机名之外的字符串进行匹配,对特定的请求进行处理
注意:
这里演示tomcat和nginx都在同一台服务器,不同服务器配置稍有区别。这里主要修改了http块中的upstream负载均衡池和server块
events {
worker_connections 1024; # 单个进程最大连接数
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#反向代理负载均衡设定部分
#upstream表示负载服务器池,定义名字为localhost的服务器池
upstream localhost{
server localhost:8080;
server localhost:8081;
}
#gzip on;
server {
listen 8091; #监听端口
server_name localhost; #当前服务的域名
location / {
#root html;
#index index.html index.htm;
proxy_pass http://localhost; #对应 upstream localhost
#获取真实IP配置
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#end
#proxy_redirect off;
proxy_connect_timeout 240;
proxy_send_timeout 240;
proxy_read_timeout 240;
# note, there is not SSL here! plain HTTP is used
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
启动
配置完毕后加载配置文件方式启动nginx,输入访问网址http://xxxxxx:8091//xx,刷新地址栏,可以看到页面来回切换,标识配置成功了。
踩坑
- IP与实际不符
登录到系统后发现日志ip显示不对,原因是nginx反向代理导致IP错误,需要在配置文件加入几行配置
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- 页面重定向后端口丢失
解决办法,配置文件添加$server_port
proxy_set_header Host $host:$server_port;
总结
这个是http请求方式的nginx负载均衡,和https请求的配置还是有些差别的,还需要安装ssl模块。考虑到安全性问题,切换成https请求的方式是很有必要的。总之,作为初步接触nginx,掌握这些也是蛮重要的。虽然配置文件很多参数还不了解,照葫芦画瓢,相信积少成多,总是不会错的。