一、Nginx简介
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
二、Nginx应用场景
1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
三、概念解释
3.1正向代理
1、所谓正向代理其实就和我们平时所做的翻墙一样,例如:当我们想要访问某些国外的**网站时,因为某些原因我们无法访问到,这时候我们就可以找代理,代理有能力访问到那个网站,而我们只需要访问代理。就可以得到那个网站的内容了。且代理可以决定是否将用户信息告诉给网站。
2、总的来说正向代理是一个位于客户端与原始服务器之间的一个代理服务器,为了从原始服务器获取内容,客户端向代理发送一个请求并指定目标服务器(原始服务器),然后代理服务器向原始服务器转交请求并获取内容交给目标服务器,客户端必须进行特殊的设置才能使用正向代理。
3.2反向代理
1、与正向代理相反,举个例子:当用户访问某个服务器下的内容时,其实该服务器并无此内容,但是该服务器通过反向代理从另一台服务器中获取到了用户想要的内容,并返回给了用户。用户以为是在此服务器下获取到的内容,其实并不是。
2、总的来说,反向代理用户不需要进行特殊的设置,对用户来说他以为访问得到的内从是从原始服务器中得到的。其实是客户端向反向代理的命名空间中发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。
四、安装nginx
1.上传nginx安装包
2.解压nginx
tar -zxvf nginx-1.12.2.tar.gz -C /usr/local/src/
3.进入到nginx的源码目录
cd /usr/local/src/nginx-1.12.2/
4.预编译
./configure
5.安静gcc编译器
yum -y install gcc pcre-devel openssl openssl-devel
6.然后再执行
./configure
7.编译安装nginx
make && make install
8.启动nginx
sbin/./nginx
9.查看nginx进程
ps -ef | grep nginx
netstat -anpt | grep nginx
10.退出nginx
./nginx -s quit
11.重启nginx
./nginx -s reload
将springboot程序部署在多台服务器上,然后启动springboot
java -jar niubike-0.0.1-SNAPSHOT.jar >> ./logs 2>&1 &
修改nginx的配置文件,让nginx实现负载均衡功能
vi /usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#响应数据的来源
upstream tomcats {
#分权 即访问131与134的次数比例为1比1
server 192.168.88.101:8888 weight=1;
server 192.168.88.102:8888 weight=1;
server 192.168.88.103:8888 weight=1;
}
server {
listen 80;
server_name 192.168.88.88;
#即所有请求都到这里去找分配
location ~ .* {
#使用mytomcat分配规则,即刚自定义添加的upstream节点
proxy_pass http://tomcats;
}
}
}
五、工作原理
1、nginx监听本地的8888端口,并将请求转发到192.168.88.101,192.168.88.102,192.168.88.103三个ip中的一个,映射的策略是ip_hash,这个策略会对请求的ip进行hash运算并将结果映射到其中一个ip,它能确保一个确定的请求ip会被映射到一个确定的服务,这样就连session的问题也不用考虑了。
2、配置完成后,只需要在本地其三个服务,分别监听101,102和103,然后打开浏览器访问192.168.88.88:8888,就会访问到你的其中一个服务。