nginx的功能和优缺点



nginx是一种服务器软件,将程序放在nginx服务器上,将程序发布出去,nginx是一种高性能的Http和反向代理服务器,同时也是一个代理邮件服务器,也可以实现负载均衡。



负载均衡:当同时有N个用户访问我们的服务器的时候,为了减轻服务器的压力,我们需要将用户分别引入各服务器,分担服务器的压力。



nginx能处理百万级tcp的连接,10以上的并发连接,并且是一个非常好的跨平台功能。



 



反向代理与负载均衡



正向代理:



有时候,用自己的计算机A想访问国外的某个网站B,但是访问不了,此时有一台中间服务器C可以访问国外的网站B,那么我们可以通过C来访问B这个网站,那么这个时候C就是代理服务器,这种访问是正向代理,正向代理有一特点,就是我们知道明确访问哪个网站。别



反向代理:



当我们有一个服务器集中,并且服务器集群中的每台服务器提供的内容一样的时候,同样我们要从个人电脑访问到集群中的服务器时无法访问,且此时第三方服务器能访问集群。这个时候通过第三方服务器访问集群的内容,但是此时我们不知道那一台服务器提供内容,此时的代理方式就是反向代理。



负载均衡:



可建立多个服务器建立一个集群,然后当用户访问我们的网站时,这时先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将访问的请求引入该服务器,这样每次用户的访问都会保证服务器集群中的每个服务器的压力处于平衡,这样就避免了服务器崩溃的情况。




 




 



Nginx安装操作:



wget下载:



http://nginx.org/download/nginx-1.6.3.tar.gz



进行安装:



tar -zxvf nginx-1.6.3.tar.gz



下载所需要的依赖文件:



yum install pcre yum install pcre-devel



yum listall zlib yum install zlib-devel



进行configure配置:



cd nginx-1.6.3 && ./configure --prefix=/usr/local/nginx



编译安装:



make && make install



启动与停止nginx:



cd/usr/local/nginx目录下:



conf:放置的都是配置文件



html:放置的都是网页程序



logs:放置的都是日志



sbin:代表这nginx程序



启动命令:



/usr/local/nginx/sbin/nginx 关闭(-s stop) 重启(-s reload)



ps -ef|grep nginx 查看进程号



kill -QUIT 9624 回车(9624是通过查看进程号的命令查看的) 从容停止



kill -TERM 9624 快速停止



查看配置文件是否正确的命令:



/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf



 



成功:



查看是否成功(netstart -ano|grep 80)



失败:可能端口被占用



浏览器访问:http://localhost:80



 



nginx日志配置:



日志文件默认是有格式的,使用log_format指令来设置nginx服务器的日志文件的记录格式。



配置存储路径,access_log指令来配置。



不要日志文件,可以关闭:access_log off



配置文件自动切割:



进入cd /usr/local/nginx/logs



在logs目录下创建脚本文件:touch



编辑 vim ,保存退出。



D=$(date +%y%m%d)



mv /usr/local/nginx/logs/access.log $(D).log



kill -USR1 $(cat /usr/local/nginx.pid)



执行crontab -e命令,进入如下,保存退出,全部完成



23 59 *** /bin/bash /usr/local/nginx/logs/



 



负载均衡的实现:



location语法:表示url方式定位



基础语法有三种:



location = pattern{}精准匹配



location pattern{}一般匹配



location ~ pattern{}正则匹配



nginx语法:



if(条件为: =~ ~*) return break rewrite



-f是否为文件 -d是否为目录 -e是否存在



进入目录:



/usr/local/nginx/sbin/conf cd /usr/local/nginx/conf



新建一个touch fzjh.conf文件命令,vim进入配置:



user nobody; 声明用户



worker_processes 4; 开启的进程数



events{



worker_connections 1024; 最大的并发数量



}



http{



upstream my {



ip_hash;设置待选的服务器列表



server 182.18.22.2:80 weight(权重)=1;



server 118.144.78.52;



}



server{



listen 8089;设置监听的端口



location / {



选择访问哪个服务器,http://my(就是待选的名称)



proxy_pass http://my;



}



}



}



保存退出



加载fzjh.conf文件 命令:



/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/fajh.conf



打开浏览器输入:127.0.0.1:8089



 



HttpUpstream模块:



Upstream模块是nginx服务器的一个重要模块。



Upstream实现轮询和客户ip之间实现后端的负载均衡,常用的指令有:ip_hash、server、 upstream。



在Upstream模块中加入ip_hash,就会将同一个用户引向我们后端的同一个服务器。



server:server 182.18.22.2:80 weight=2;(权重,如果数字越大,权重就大,被访问到的概率就越高)。



upstream:是通过 proxy_pass http://my;来访问实现轮询的



 



nginx虚拟主机配置:



如果我们只有一台nginx服务器,我们可以对此进行虚拟主机配置。



就可以将一台nginx服务器分割为多台独立的子服务器。



有两个步骤:第一配置id,第二绑定ip地址与主机。



主设备配置:ifconfig eth0 192.168.1.1 netmask 255.255.255.0



分设备1:ifconfig eth0:1 192.168.1.7 broadcast 192.168.1.255 netmask 255.255.255.0



分设备2:ifconfig eth0:2 192.168.1.17 broadcast 192.168.1.255 netmask 255.255.255.0



进入 cd /usr/local/nginx/conf,ls查看目录 ,新建touch xnzj.conf配置文件



编辑vim xnzj.conf配置文件 保存



进入cd /usr/local/nginx,ls查看目录,进入cd html目录下



新建mkdir server1,和ss2两文件,在这两个中新建touch index.html文件



 



nginx缓存的配置:



当我们在浏览器中浏览某网页的内容时,我们会把这些内容存储到本地。



当我们第二次浏览的时候,这些内容就可以从本地加载,这样速度会快很多。



这就可以成为缓存,缓存也需要定期清理。



 



进入 cd /usr/local/nginx/conf 编辑:vim nginx.conf



expires 2d; (2天自动清除)




压缩功能配置:



cd /usr/local/nginx/conf vim nginx.conf(编辑)



gzip on(开启压缩)



on为开启,gzip_min_lenth 1k;下限,gzip_buffers 4 16k;4个16k的顺序流大小。



gizp_http_version 1.1;版本



gzip_vary on;开启判断我们的客户端是否支持gzip的压缩技术。



自动列目录:



进入 vim /usr/local/nginx/conf/nginx.conf




重新加载配置文件:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf