Nginx(linux环境)
Nginx是一个高性能轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,占用内存少,并发能力好,能够支持高达 50,000 个并发连接数的响应。
在linux(centos6.5)下面的安装环境:
因为在多种Linux下的安装包格式不相同:我们使用源码(C语言)来自己编译安装:
源码下载:http://nginx.org/
- nginx的安装:
注意先切换到root超级用户:
su root - 安装环境:
nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境。
gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有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 - 编译安装:
将nginx-1.8.0.tar.gz拷贝至linux服务器。
解压:
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
在nginx-1.8.0目录中没有makefile文件。执行1、 configure生成makefile
./configure
–prefix=/usr/local/nginx
–pid-path=/var/run/nginx/nginx.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
–http-client-body-temp-path=/var/temp/nginx/client
–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 。需要我们自己创建
mkdir /var/temp/nginx –p
直接make编译安装: - 启动nginx:
cd /usr/local/nginx/sbin/
在这个目录下有一个nginx的可执行文件,直接执行。
./nginx
查看是否启动成功:
ps aux|grep nginx
看到:
就成功了。通过ip访问80端口出现(注意管理linux的防火墙和使用NAT模式共享ip):
关闭nginx:
在sbin目录下 : ./nginx –s stop或者 ./nginx –s qiut
./nginx –s reload 直接刷新配置文件。不用关闭nginx,
Nginx能够支持5万的并发(tomcat只有500)。
虚拟主机基本配置:
- 全局块
a) 错误日志的存放路径
b) Nginx进程PID的存放路径。。。。等 - events块: 主要影响Nginx服务器与用户的网络连接
a) 最大连接数
b) 是否允许多个连接
c) 设置网络连接的序列化 - http块(重点);
a) 配置server
i. 配置网络监听
ii. 虚拟主机配置
iii. Localtion配置: - location配置
- 请求根目录配置
- 更改location的URI
- 网站默认首页配置
通过配置不同的端口来配置不同的虚拟主机:
我们可以在http中添加多个server来监听端口:
修改listen的端口号。主机名不变
后面的localhost对应你的资源地址。
通过配置不同的域名来配置不同的虚拟主机;
都是80端口。但是传递过来的主机名不同,对应不同的server。
反向代理(对于服务端而言):只需要一个公网的ip供客户端访问,访问请求过来时:代理服务器不自己处理请求。而是把请求转发给后面挂载的应用服务器(例如:tomcat).nginx起到一个转发的作用。相当于一个网站的入口。
正向代理(对于客户端而言):就相当于局域网的电脑中访问网络时;局域网都将网络请求转发给一个代理服务器。代理服务器上网得到资源之后再返回给局域网中的电脑,
反向代理的基本配置:核心是proxy_pass指令。
以上就是一个服务器的基本配置开发中一般配置多个节点:
以上的访问流程是;当我们访问www.sohu.com时,会访问到当前节点。当前节点把请求再次转发到upstream中的地址。并不是自己处理请求。
负载均衡:
相当于在一个server节点上挂载多台的服务器。我们只需要在:
upstream sohu{
server 192.168.25.1:80
server 192.168.25.2:80 weight=2;//相当于现在就是1;2:1
server 192.168.25.3:80
}
配置多个server属性。就可以做到多个服务器。还可以根据服务器的情况调整权重,权重却高,请求越多。默认都是1.比例只是概率。
对于配置负载均衡;有多种策略。
除了上面的轮询和配置权重。还有;
- 最少连接:nginx会把请求转发给连接最少的那个
upstream sohu{
least_conn;//最少连接配置。
server 192.168.25.1:80
server 192.168.25.2:80 weight=2;//相当于现在就是1;2:1
server 192.168.25.3:80
} - IP地址哈希; 同一客户端连续的Web请求可能会被分发到不同的后端服务器进行处理,因此如果涉及到会话Session,那么会话会比较复杂。常见的是基于数据库的会话持久化。要克服上面的难题,可以使用基于IP地址哈希的负载均衡方案。这样的话,同一客户端连续的Web请求都会被分发到同一服务器进行处理。
upstream sohu{
ip_hash;//配置IP哈希
server 192.168.25.1:80
server 192.168.25.2:80 weight=2;//相当于现在就是1;2:1
server 192.168.25.3:80
}
还可以配置
proxy_connect_timeout 1; #nginx服务器与被代理的服务器建立连接的超时时间,默认60秒
proxy_read_timeout 1; #nginx服务器想被代理服务器组发出read请求后,等待响应的超时间,默认为60秒。
proxy_send_timeout 1; #nginx服务器想被代理服务器组发出write请求后,等待响应的超时间,默认为60秒。
proxy_http_version 1.0 ; #Nginx服务器提供代理服务的http协议版本1.0,1.1,默认设置为1.0版本。
#proxy_method get; #支持客户端的请求方法。post/get;
proxy_ignore_client_abort on; #客户端断网时,nginx服务器是否终端对被代理服务器的请求。默认为off。
proxy_ignore_headers “Expires” “Set-Cookie”; #Nginx服务器不处理设置的http相应投中的头域,这里空格隔开可以设置多个。
proxy_intercept_errors on; #如果被代理服务器返回的状态码为400或者大于400,设置的error_page配置起作用。默认为off。
proxy_headers_hash_max_size 1024; #存放http报文头的哈希表容量上限,默认为512个字符。
proxy_headers_hash_bucket_size 128; #nginx服务器申请存放http报文头的哈希表容量大小。默认为64个字符。
proxy_next_upstream timeout; #反向代理upstream中设置的服务器组,出现故障时,被代理服务器返回的状态值。
高可用(备份):
计算机系统的可用性用 [1] 平均无故障时间(MTTF)来度量,即计算机系统平均能够正常运行多长时间,才发生一次故障。系统的可用性越高,平均无故障时间越长。
为了屏蔽负载均衡服务器的失效,需要建立一个备份机。主服务器和备份机上都运行High Availability监控程序(使用keepalived),通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供服务;当备份管理器又从主管理器收到“I am alive”这样的信息时,它就释放服务IP地址,这样的主管理器就开始再次进行集群管理的工作了。为在主服务器失效的情况下系统能正常工作,我们在主、备份机之间实现负载集群系统配置信息的同步与备份,保持二者系统的基本一致。
我们不仅使用Nginx搭建http服务器。还可以做反向代理和负载均衡。
后面搭建fastDFS的太复杂,使用的是别人搭建好的一台虚拟机。
imag-server图片服务器(fastDFS) username:root password: itcast 启动的时候一定点击我已移动该虚拟机。保障ip和网卡不变。Ip为:192.168.25.133