nginx的快速入门
一.什么是nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,*使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
二.常用功能
1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
正向代理:一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。我们平时说的代理就是指正向代理。简单一点:A向C借钱,由于一些情况不能直接向C借钱,于是A想了一个办法,他让B去向C借钱,这样B就代替A向C借钱,A就得到了C的钱,C并不知道A的存在,B就充当了A的代理人的角色。
反向代理(Reverse Proxy),以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。
可以这么说:A向B借钱,B没有拿自己的钱,而是悄悄地向C借钱,拿到钱之后再交给A,A以为是B的钱,他并不知道C的存在。
2.负载均衡
负载均衡是一种技术解决方案。用来在多个资源(一般是服务器)中分配负载,达到最优化资源使用,避免过载。Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦。
3、web缓存
Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。
三.安装Nginx
这⾥下载的是 nginx-1.17.10.tar.gz 安装包,并将其直接放在了 root ⽬录下
1、在 /usr/local/ 下创建 nginx ⽂件夹并进⼊
cd /usr/local/
mkdir nginx
cd nginx
2、将 Nginx 安装包解压到 /usr/local/nginx 中即可
tar zxvf /root/nginx-1.17.10.tar.gz -C ./
解压完之后, /usr/local/nginx ⽬录中会出现⼀个 nginx-1.17.10 的⽬录
3、预先安装额外的依赖
yum -y install pcre-devel
yum -y install openssl openssl-devel
4.安装Nginx
cd nginx-1.17.10
./configure
make && make install
安装完成后,Nginx的可执⾏⽂件位置位于
/usr/local/nginx/sbin/nginx
5、启动Nginx
cd /usr/local/nginx/sbin
./nginx
如果想停止Nginx或重新加载Nginx,可以使用
./nginx -s stop
./nginx -s reload
这是启动游览器验证情况 输入你的主机ip
四.反向代理
实例一:使用www.123.com 访问Nginx,再通过Nginx访问tomcat
1.在Windows系统的host文件进行域名和虚拟机ip的配置
2.进入Nginx的配置文件修改
cd /usr/local/nginx/conf/nginx.conf
server {
listen 80;
# 配置虚拟机的ip
server_name 192.168.2.63;
location / {
# 要虚拟机的Tomcat
proxy_pass http://127.0.0.1:8080;
root html;
index index.html index.htm;
}
3.启动Nginx和Tomcat,访问www.123.com 出现
实例二:根据访问的路径不同跳转到不同端口的服务中,Nginx的监听端口为9001
访问http://127.0.1:9001/edu/ 跳转到127.0.0.1:8080/
访问http://127.0.1:9001/vod/ 跳转到127.0.0.1:8081/
1.在准备一个Tomcat 将端口号修改为8081
2.在端口号为8080的Tomcat的webapps下创建文件夹edu 添加一个HTML页面,内容为 8080,同理在另一个Tomcat创建文件夹edu,添加HTML页面,内容为8081
3.进入Nginx的配置文件修改
server {
listen 9001;
server_name 192.168.2.63;
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
~ :用于表示uri包含正则表达式,并且区分大小写
~* :用于表示uri包含正则表达式,并且不区分大小写
访问 http://192.168.2.63:9001/edu/a.html
访问 http://192.168.2.63:9001/vod/a.html
五.负载均衡
1.企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案就是使用nginx实现负载均衡。
2.Nginx实现负载均衡
同样使用两个tomcat模拟两台应用服务器,端口号分别为8080 和8081
Nginx的负载分发策略
1)、轮询 ——1:1 轮流处理请求(默认)
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。
2)、权重 ——weight
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。
3)、ip_哈希算法
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。
3、配置Nginx的负载均衡与分发策略
1)在8080的Tomcat的webapps里面的edu文件复制一份到8081里面
2)在Nginx的nginx.conf添加如下内容:
upstream myserver{
# 监听的Tomcat
server 192.168.2.63:8080;
server 192.168.2.63:8081;
}
server {
listen 80;
# 虚拟机的ip
server_name 192.168.2.63;
location / {
proxy_pass http://myserver;
root html;
index index.html index.htm;
}
六.动静分离
为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源比如图片,js,css等文件,我们可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器就可以直接处理,而不用将请求转发给后端服务器。用户请求的动态文件比如servlet,jsp则转发给Tomcat,Jboss服务器处理,这就是动静分离。这也是反向代理服务器的一个重要的作用。
1.在根目录下创建一个文件夹data,在data里面创建image和www两个文件夹,分别放一些图片和静态html文件
2.在Nginx的nginx.conf的server里面添加如下内容:
server {
location /www/{
root /data/;
index index.html index.htm;
}
location /image/{
root /data/;
autoindex on;
}
}
分别输入http://192.168.2.63/image/ http://192.168.2.63/www
http://192.168.2.63/www/a.html
发现可以访问静态资源