Nginx
1.什么是Nginx
Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:在
连接高并发的情况下,Nginx 是Apache 服务不错的替代品。是由伊戈尔· 赛索耶夫
为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本 0.1.0
发布于2004年10月4 日。
2. Nginx作用
a、 http协议代理(动静分离)
b、 服务的反向代理
c、在反向代理中配置集群的负载均衡
d、 搭建虚拟主机
3. Nginx相关概念
3.1 正向代理
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从
原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原
始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
3.2 反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然
后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连
接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
3.3 二者之间的区别
位置不同
正向代理,架设在客户机和目标主机之间;
反向代理,架设在服务器端;
代理对象不同
正向代理,代理客户端,服务端不知道实际发起请求的客户端;
反向代理,代理服务端,客户端不知道实际提供服务的服务端;
4.nginx的安装
4.1、安装c语言环境
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
4. 2、安装nginx
a、上传nginx安装包:/usr/upload
b、解压安装包:tar -zxvf nginx-1.8.1.tar.gz
c、编译
cd nginx-1.8.1
./configure --prefix=/usr/local/nginx
注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var 下创建 temp 及 nginx
目录
也可直接解压后的目录拷贝到、usr/local/nginx
d、安装
make
make install
5、常用命令:
5.1 启动:
cd /usr/local/nginx/sbin/
./nginx
5.2 停止nginx
方式1,快速停止:
cd /usr/local/nginx/sbin
./nginx -s stop
此方式相当于先查出 nginx进程id 再使用kill命令强制杀掉进程。
方式2,完整停止(建议使用):
cd /usr/local/nginx/sbin
./nginx -s quit
此方式停止步骤是待 nginx进程处理任务完毕进行停止。
5.3 重启nginx
./nginx -s reload
6.Nginx的使用
6.1 配置虚拟主机
6.1.1 什么是虚拟主机
虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主
机,每个虚拟主机可以独立对外提供 www 服务,这样就可以实现一台主机对外提供多个
web 服务,每个虚拟主机之间是独立的,互不影响的。
6.2 Nginx的虚拟主机配置方式
Nginx支持三种类型的虚拟主机配置
配置信息介绍:
main:用于进行 nginx全局信息的配置
events:用于 nginx工作模式的配置
http:用于进行http协议信息的一些配置
server:用于进行服务器访问信息的配置
location:用于进行访问路由的配置
upstream:用于进行负载均衡的配置
6.2.1. 基于IP 的虚拟主机
修改 Nginx 的配置文件完成基于 IP的虚拟主机配置
设置基于两个ip的server
6.2.2. 基于端口的虚拟主机
设置监听两个端口server
6.2.3. 基于域名的虚拟主机
在配置文件中server_name 后改为域名,设置两个域名的server
6.2.3.1 配置nginx代理域名
1、修改修改C:\Windows\System32\drivers\etc\hosts
192.168.75.148 www.wokao.com
2、修改nginx.conf
server{
listen 80;
server_name www.wokao.com
}
6.3 Nginx中配置服务的反向代理
nginx代理一台tomcat(反向代理)
修改conf/nginx.conf:
第一种:
location /{
proxy_pass http://127.0.0.1:8080;
}
第二种:
upstream myTomcats{
server 127.0.0.1:8080;
}
server{
listen 80;
server_name localhost;
location /{
proxy_pass http://myTomcats;
}
}
6.4 在反向代理中配置负载均衡
6.4.1 什么是负载均衡
负载均衡,英文名称为 Load Balance,其意思就是分摊到多个操作单元上
进行执行,例如Web 服务器、FTP服务器、企业关键应用服务器和其它关键任务
服务器等,从而共同完成工作任务。
配置步骤:
1、在/usr/java目录中上传两台tomcat,并命名为tomcat1、tomcat2
2、修改tomcat2的端口号(+10)
并修改tomcat2的端口号
3、创建test项目,分别发布到两台tomcat中,并测试
4、nginx代理两台tomcat:
upstream myTomcats{
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:8090 weight=1;
}
server{
listen 80;
server_name localhost;
location /{
proxy_pass http://myTomcats;
}
}
6.4.2 Nginx负载均衡策略
1)轮询(默认)
每个请求按次数顺序逐一分配到不同的后端服务器,如果后端服务器 down掉,能自动剔除。
2)指定权重
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。
3)IP绑定 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session丢失的问题。
6.4.3 tomcat集群的session丢失问题
方式一:保证一个ip永远只访问一台tomcat(只支持linux)
upstream中添加 ip_hash;
方式二:session共享
一种使用tomcat广播机制完成session的共享(只支持windows,不推荐的方式)
一种使用redis服务器的方式完成session的共享(推荐的方式)
6.5 http协议代理
由于ftp服务器是基于 ftp 协议处理的。那么现在我想在外部访问该图片,是没有办法
访问的。他是不能处理 http协议的。所以我们需要拥有一个能够处理http协议代理服务器。
其实就是使用了Nginx 的虚拟主机的方式。
6.5.1 http协议代理配置
1、创建静态资源:在/usr/upload创建images文件夹,并上传图片
2、配置动静分离:
location / {
root /usr/upload/images;
}
注意:做FTP反向代理时,配置文件需要配置用户权限才能访问ftp用户目录。
cd /usr/local/nginx/conf/
vim nginx.conf
如下所示: