目录
实现:
http服务器:Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器
虚拟主机:可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
反向代理、负载均衡:当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
关闭防火墙:
启动 ./nginx 记得关闭防火墙:
service iptables stop
永久关闭防火墙方法:
chkconfig iptables off
安装:
1.安装Nginx源码需要gcc环境和第三方的开发包;
- 需要安装gcc的环境。yum install gcc-c++
- 第三方的开发包。
- PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
- zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
- openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
2.将Nginx源码解压缩
[root@localhost ~]# tar zxf nginx-1.8.0.tar.gz
参数:zxf / zxvf
z:表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压(解压gz就要有参数z)
x:从 tar 包中把文件提取出来(从文档中释放)
f:f xxx.tar.gz : 指定被处理的文件是 xxx.tar.gz(是使用tar必选的放最后)
v:显示详细信息
3.使用configure命令,创建makefile
执行下面命令来生成Makefile
./configure \ 加上反斜杠意思是这个命令没结束
--prefix=/usr/local/nginx \ 指定安装目录
--pid-path=/var/run/nginx/nginx.pid \ 在Linux环境下,每一个进程都有一个pid文件
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \ 错误日志
--http-log-path=/var/log/nginx/access.log \ 访问日志
--with-http_gzip_static_module \ 加上gzip插件模块
--http-client-body-temp-path=/var/temp/nginx/client \ 临时文件保存的路径,/var/temp/nginx这是存在的,必须先创建好,不然会报错
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注意:启动nginx之前,上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
[root@localhost sbin]# mkdir /var/temp/nginx/client -p 【?】
4.make
直接输入make命令编译源代码
【输入make命令在什么位置?】
【在Nginx文件夹下(列表包含Makefile文件夹),输入命令make】
5.编译完成之后,进行安装
输入命令:
make install
因为上面已经指定过创建在哪个目录下(--prefix=/usr/local/nginx \ 指定安装目录),所以install后就不用再指定位置了,直接执行。
6.完成
到 /usr/local 目录下,就会出现一个nginx文件夹
nginx中有 :
conf(配置文件)
html(欢迎页的根目录)
sbin(Nginx服务)
7.启动
sbin目录下,运行命令:
./nginx
8.启动报错
创建client失败,找不到对应的文件或目录
==> 需要创建 /var/temp/nginx
mkdir /var/temp/nginx
再次失败,因为这是一个多级目录,需要一层一层创建;
==> 创建多级目录 /var/temp/nginx -p
9.再次启动
./nginx
无信息返回,成功。
10.查看进程
ps aux|grep nginx
有两个进程:
说明nginx正常启动
11.关闭nginx
kill 4667 (正常关闭)
kill -9 4667 (暴力关闭)
推荐关闭方法: ./nginx -s stop
12.Nginx重新加载配置文件
./nginx -s reload 相当于快速重启,重新刷新下配置,并没有关机
13.访问
可以通过http方式进行访问:直接输入ip,进入nginx欢迎页
Nginx的配置:
主要修改的是: nginx/conf 中 的 nginx.conf
vim nginx.conf
http{ http服务
其他配置
server{ 一个server节点,就叫做一个虚拟主机
listen 80; 监听的是80端口
server_name localhost; 域名
location / { 请求来了到哪里去找资源
root html; Html是nginx安装目录下的html目录(静态页面存放的位置,也可以使用绝对路径)
index index.html index.htm; 默认的欢迎页
}
还有出错页面相关;
}
}
如果想一台服务器布多个网站,复制一个server就行了
vi环境下的复制:
shift+v 选中
y 复制; p 粘贴; u取消
1.添加server
复制server之后,修改:
(1)监听端口: listen 81;
(2)localhost中根目录: root html81;
完成
通过端口区分虚拟主机
通过域名区分虚拟主机
通过ip区分虚拟主机:ip稀缺资源,需要租用;一般一台服务器就一个ip
域名:就是网址,baidu.com是一级域名,www.baidu.com是一个二级域名;一个域名只能绑定一个ip,一个ip可以被多个域名绑定;
访问网站:用的协议是http协议,http协议底层是tcp/ip协议,联网的时候需要配一个ip地址,配个网关,配个dns的地址(解析域名用的),访问某台服务器,最终还是通过ip来访问的
dns服务器:把域名解析成ip地址,然后在通过ip地址去访问服务器;记录了域名和ip的映射关系(解析ip需要12个小时(一般四五个小时就能通过域名访问这个ip了),中间需要更新下服务器)
配置虚拟主机:
1.hosts文件:
hosts:可以配置域名和ip的映射关系,如果hosts文件中配置了域名和ip的对应关系,不需要走dns服务器。
window系统中路径:C:\Windows\System32\drivers\etc
2.复制server
配置虚拟主机,只需要复制一份server就行了
修改:
server_name:
location中的root:
就是在一个Nginx服务器上, 通过不同的server配置,访问不同的资源文件
Nginx作用:访问静态资源,配置虚拟主机,反向代理
反向代理:
1.代理(正向代理):客户端
代理服务器:我要上网,中间人替我上网,把信息在转给我(翻墙)【决定权在用户】
2.反向代理:服务端
网站入口只有一个,后面有很多服务器同时提供服务,请求到Nginx反向代理服务器,Nginx在去应用服务器找用户需要的服务,Nginx作为转发人转给用户;
服务端,到底哪台服务器为你服务,是由反向代理服务器决定的。【决定权在Nginx】
反向代理服务器,在公司的机房内部,可能只有反向代理服务器这上面绑定了公网ip,其他的应用服务器都是内网,
Nginx配置反向代理:
Nginx做的事就是一个请求转发,不在提供服务(root下的静态资源)
1.安装应用服务器:Tomcat
安装jdk,解压缩;(一般是不同的虚拟机,在不同的虚拟机上装Tomcat)
修改Tomcat端口:Tomcat目录下的 conf 中 server.xml
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
Tomcat的欢迎页:Tomcat文件下 webapps/ROOT/index.jsp
2.配置Nginx反向代理(配置Nginx请求转发):
需要再加上一个server节点,将请求转发给Tomcat,配置完需要reload;
(1)配置hosts文件:通过域名来区分不同的网站
192.168.20.181 www.baidu.com
192.168.20.181 www.google.com
(2)
http{
其他配置
upstream tomcat1{
server 192.168.20.181:8080;
}
server{ 一个server节点,就叫做一个虚拟主机
listen 80;
server_name www.baidu.com; 域名
location / { 请求来了到哪里去找资源
proxy_pass http://tomcat1; root访问的是静态资源,反向代理要改成请求转发(代理)
index index.html index.htm; 默认的欢迎页
}
还有出错页面相关;
}
}
(3)重新加载配置文件
请求转发总结:不同的域名指向同一个ip,通过域名来区分不同的虚拟主机,然后Nginx转发给Tomcat来处理这个请求,处理完成之后Tomcat会转发给Nginx,Nginx在转发给浏览器;
集群,负载均衡:
在一个upstream 节点增加一个Tomcat服务器,weight为权重
upstream tomcat1{
server 192.168.20.181:8080 weight=1;
server 192.168.20.181:8082 weight=2;
}
Nginx实现高可用:
Nginx网站的入口,保证高可用(不管什么情况下都不能挂)
实现高可用:增加冗余(加备份):
keepalived+nginx实现主备
keepalived(健康检查工具软件)
超过5万并发:
如果Nginx不够用,并发量超过5万:
硬负载:硬件负载均衡(F5)
Nginx是七层负载,应用层的负载
F5硬负载是四层负载,在传输层就能转发,效率更高
LVS:国产开元项目,四层负载,软负载,能达到F5的60%的能力
在各个环节加缓存以减轻系统的压力:CDN加速(缓存),相当于是在网络运营商那,买服务器,将网页内容缓存到网络运营商那里,请求的时候就不用访问到真正的 应用服务器 上了