nginx介绍
1.什么是nginx?
nginx就是c语言开发的一个高性能HTTP和反向代理Web服务器以及电子邮件(IMAP/POP3)代理服务器
nginx是轻量级的。
2.什么是反向代理?
代理服务可以简单的分为正向代理和反向代理。
正向代理:就是代理服务器替代访问方(用户)去访问目标服务器(服务器)是站在浏览器端来说的
例如:上一个外网,搭一个VPN,那么VPN和浏览器就是在同一个阵营
反向代理: nginx代替tomcat服务器接收请求 是站在服务器端说的
例如:访问百度,那么百度的服务器不止一个,因此就用一个反向代理服务器,让此服务器去把请求分配给其他的百度服务器
负载均衡: 把客户端的请求分摊给多台服务器上执行,减轻每台服务器的压力。
动静分离: 将静态的资源放到反向代理服务器,节省用户的访问时间
Web服务器分2类:
- web应用服务器,如:
- tomcat
- resin
- jetty
- web服务器,如:
- Apache 服务器
- Nginx
- IIS
区分:web服务器不能解析jsp等页面,只能处理js、css、html等静态资源。
并发:web服务器的并发能力远高于web应用服务器。
3.安装和启动?
安装步骤:
下载nginx:
官方网站:http://nginx.org/
1)安装C语言环境
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
2)解压安装包
tar -zxvf nginx-1.10.0.tar.gz
3)设置安装目录
cd /usr/upload
./configure --prefix=/usr/local/nginx
4) 编译并安装
make && make install
目录结构:
├── client_body_temp # 临时目录
├── conf # Nginx所有配置文件的目录
│ ├── nginx.conf # Nginx主配置文件
├── fastcgi_temp # fastcgi临时数据目录
├── html # Nginx默认站点目录
│ ├── 50x.html # 错误页面优雅替代显示文件,例如当出现502错误时会调用此页面
│ └── index.html # 默认的首页文件
├── logs # Nginx日志目录
│ ├── access.log # 访问日志文件
│ ├── error.log # 错误日志文件
│ └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp # 临时目录
├── sbin # Nginx命令目录
│ └── nginx # Nginx的启动命令
├── scgi_temp # 临时目录
└── uwsgi_temp # 临时目录
5)启动和关闭
在nginx目录下有一个sbin目录,sbin目录下有一个nginx可执行程序
cd /usr/local/sbin
启动:./nginx
关闭: ./nginx -s stop
重启: ./nginx -s reload #可以不关闭nginx的情况下更新配置文件
添加:如何查看nginx启动了?
在/usr/local/nginx/logs查看是否有nginx.pid;有了就是启动了,没有就是没有启动
或者使用ps -ef | grep nginx
或者直接在浏览器中输入,虚拟机的IP地址即可 如:http://192.168.164.127/
出现一下界面安装成功:
6)nginx.conf配置文件介绍
完整配置:
#user nobody;
#工作进程
worker_processes 1;
events {
#连接池连接数
worker_connections 1024;
}
#请求方式
http {
#媒体类型
include mime.types;
#默认媒体类型 二进制
default_type application/octet-stream;
#上传文件
sendfile on;
#超时时间
keepalive_timeout 65;
#gzip on;
#服务器配置
server {
#监听端口
listen 80;
#监听域名
server_name localhost;
#请求头信息
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#请求映射规则,/代表所有请求路径
location / {
#请求转发地址
#root html; 文件夹
proxy_pass http://manage.powershop.com:8080;
#欢迎页
#index index.html index.htm;
#转发连接超时时间
proxy_connect_timeout 600;
#转发读取超时时间
proxy_read_timeout 600;
}
}
}
4 Nginx代理Tomcat服务器
1 在linux中安装两台tomcat
直接输入命令的时候是无法启动的,需要分配权限
进入bin目录分配执行权限:
chmod 777 startup.sh
chmod 777 catalina.sh
1)解压两个tomcat到/usr/java,分别命名为tomcat1,tomcat2
2)修改tomcat的配置文件server.xml,将端口进行修改:
3)将项目/webapps/test/index.html分别发布到两个tomcat中并测试
<h1>这是tomcat-1</h1>
2、nginx的6种负载均衡策略:
负载均衡策略 | 说明 | 解释 |
---|---|---|
轮询 | 默认 | |
weight | 权重方式 | server http:x.x.x.x:p weight=5 权重级别高的,被访问到的几率就高 |
ip_hash | 依据ip分配方式 | 根据客户端ip分配 例如:(192.168.8.128)%2 |
least_conn | 按连接数 | 根据Tomcat连接数分配 |
fair | 按响应时间 | |
url_hash | 依据URL分配 | 根据url分配 |
3、 如何防止session丢失?
服务器中有一个session.浏览器里有一个cookie,用户访问浏览器的时候.服务器创建一个session发给浏览器存储到了cookie之中
session复制:多台tomcat复制时,非常耗时
session特点: 1 )key value形式; 2) 可以设置过期时间
方法一:保证一个ip地址永远的访问一台tomcat服务器,就不存在session共享问题了(只支持linux)
即:upstream中添加 ip_hash;
方法二:session的共享
一种使用tomcat广播机制完成session的共享(只支持windows,不推荐的方式)
一种使用redis服务器的方式完成session的共享(推荐的方式)
4、代理一台tomcat(反向代理)
修改nginx/conf/nginx.conf文件:
location / { root html; proxy_pass http://127.0.0.1:8080; }
5、代理多台tomcat(负载均衡)
1)在http节点上添加一个upstream
2)修改location /下的反向代理
upstream myTomcats{
server 127.0.0.1:8080;
server 127.0.0.1:8090;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://myTomcats;
}
# location ~* .(gif|jpg|png|jpeg)$ {
# root /usr/upload/images;
# }
}
5 动静分离
1)创建静态资源
在虚拟机中/usr/upload/新建images文件夹,并上传图片
2)配置nginx的nginx.conf
location ~* \.(gif|jpg|png|jpeg)$ {
root /usr/upload/images;
}
3)在浏览器中输入对应的linux虚拟机网址,找到对应的路径即可访问:
例如
http://192.168.164.127/test.jpeg