Nginx 是一款轻量级的HTTP 服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的 IO 性能,时常用于服务端的反向代理和负载均衡。
gcc -v #查看gcc版本
yum -y install gcc #安装gcc
pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。
yum install -y pcre pcre-devel
zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装
yum install -y zlib zlib-devel
openssl是web安全通信的基石
yum install -y openssl openssl-devel
wget http://nginx.org/download/nginx-1.9.9.tar.gz
tar -zxvf nginx-1.9.9.tar.gz -C /usr/local/java
./configure
make
make install
cd /usr/local/nginx
cd /usr/local/nginx
cd conf
切换目录到/usr/local/nginx/sbin下面
启动nginx
./nginx
ps -ef | grep nginx
sudo systemctl enable nginx # 设置开机启动
sudo service nginx start # 启动 nginx 服务
sudo service nginx stop # 停止 nginx 服务
sudo service nginx restart # 重启 nginx 服务
sudo service nginx reload # 重新加载配置,一般是在修改过 nginx 配置文件时使用。
反向代理其实就类似你去找代购帮你买东西(浏览器或其他终端向nginx请求),你不用管他去哪里买,只要他帮你买到你想要的东西就行(浏览器或其他终端最终拿到了他想要的内容,但是具体从哪儿拿到的这个过程它并不知道)。
正向代理:代理客户端,正向代理最大的特点是客户端非常明确要访问的服务器地址。服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息
(1)保障应用服务器的安全(增加一层代理,可以屏蔽危险攻击,更方便的控制权限)
(2)实现负载均衡
(3)实现跨域(最简单的跨域方式)
#1、新建/修改配置文件
sudo vi /etc/nginx/server/default.conf
#2、配置示例
server {
listen 80; #监听80端口
server_name ken.io.local; #监听的域名
location / {
#转发或处理
proxy_pass https://ken.io;
}
error_page 500 502 503 504 /50x.html;#错误页
location = /50x.html {
root /usr/share/nginx/html;
}
}
客户端发送的、Nginx反向代理服务器接收到的请求数量,就是我们说的负载量。请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。将服务器接收到的请求按照规则分发的过程,称为负载均衡。
iphash:对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端的ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
upstream serverswitch {
server 127.0.0.1:80;
server 127.0.0.1:81;
}
server {
listen 80; #监听80端口
server_name ken.io.local; #监听的域名
location / {
#转发或处理
proxy_pass https://serverswitch;
}
error_page 500 502 503 504 /50x.html;#错误页
location = /50x.html {
root /usr/share/nginx/html;
}
}
静态请求直接从 nginx 服务器所设定的根目录路径去取对应的资源,动态请求转发给真实的后台(前面所说的应用服务器,如图中的Tomcat)去处理。动静资源做好拆分后,利用静态资源的特点做缓存操作,提高响应效率。
好处:
1.api接口服务化:动静分离之后,后端应用更为服务化,只需要通过提供api接口即可,可以为多个功能模块甚至是多个平台的功能使用,可以有效的节省后端人力,更便于功能维护。
2.前后端开发并行:前后端只需要关心接口协议即可,各自的开发相互不干扰,并行开发,并行自测,可以有效的提高开发时间,也可以有些的减少联调时间
3.减轻后端服务器压力,提高静态资源访问速度:后端不用再将模板渲染为html返回给用户端,且静态服务器可以采用更为专业的技术提高静态资源的访问速度。
1.占有内存少、并发能力强,能支撑50000个并发连接数的响应。
2.扩展性好,第三方插件非常多。
3.具有很高的可靠性。