Nginx 配置

Nginx与服务器集群

一.集群

1. 什么是集群

   :合在一块儿 放在一块儿php

  一堆 不少css

  服务器架构集群:多台服务器组成的响应大并发,高数据量的架构体系。html

  分布式服务器架构java

  特色:mysql

  (1)成本高linux

  (2)可以下降单台服务器的压力,使用流量平均分配到多台服务器nginx

  (3)使网站服务架构更加安全稳定web

  服务器概念: 提供某种或多种服务(功能)的机器(计算机)redis

  (1)硬件 性能比较好的电脑主机sql

  (2)软件 实现各类服务支持的协议的软件

1.1 web服务软件

  提供http https协议的服务器。网站网页访问的功能

  Apache 老牌的服务器软件,功能多而且稳定  ,支持多种配置,lamp

  Nginx 安装简单小巧,并发量高,web服务器,代理服务器,邮箱服务器

  lls 微软公司,APS脚本使用,能够经过fast-cgi(网络接口服务)的方式使用PHP

  Lighttpd 德国开发的软件,小巧,提供web服务支持

1.2 数据库

  关系型数据库(RDBMS):

    Mysql mysqlab => sun(java) => Oracle

    Mariadb mysql的一个分支

    Postgresql 加州伯克利大学,学院派

    Oracle 大型商业数据库

    Sqlserver 微软数据库

    DB2 IBM

    Sqllite3 手机端(iOS和安卓)使用

  非关系型数据库

    Memcached

    Redis

    Mongodb

1.3 负载均衡

  负载均衡服务器,分发请求到不一样的服务器。使流量平均分配。

  服务器死机,称为宕(dang)机

  硬件级别 性能好,价格高

  软件级别 性价比高

  Lvs linux下分发软件

  Nginx upstream功能分发

1.4 资源服务器

  资源服务器存储静态资源,css,js,图片,视频..。通常此服务器会有硬板(ssd)读写快速,带宽更大。

1.5 反向代理

  反向代理服务器具备代理请求到对应的服务器的功能,也具备缓存的功能

  代理服务器:

  好比a须要访问c,可是a不能直接访问c。

  (1)b能够访问c,a能够访问b

  (2)a告诉b帮忙访问一下c,把c的数据返回给a

  Spuid :

  Varnish :

  Nginx :

1.6 高可用

  高可用服务器,用来监控负载均衡服务器,若是一旦负载均衡宕机,会接替负载均衡服务器的工做,继续进行网络分发的工做。能够认为是负载均衡的备用服务器

  Hearbit 心脏敲击

  Keeplive 保持

1.7 缓存软件

  Memcached

  redis

1.8 cdn内容分发

   

  需求:

  网站服务器在北京

  用户1:天津 --> 北京节点 用户访问CDN  服务器

  用户2:杭州 --> 上海节点

  

二. Nginx服务器

1. Nginx概述

  Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

  其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

  Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特色是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

2. Nginx特色

  (1)热部署:Nginx在修改配置文件以后,不须要重启,重载操做

  (2)能够高并发链接:相同配置的服务器,nginx比apache能接受的链接多得多

  (3)低的内存消耗:相同的服务器,nginx比apache低的消耗

  (4)处理响应请求很快:nginx处理静态文件的时候,响应速度很快

  (5)具备很高的可靠性

3. Apache与Nginx服务器区别

  1)nginx和apache的软件底层架构不同。

  (1)Nginx的并发要比Apache好不少。

  (2)Nginx属于轻量级服务器软件,Apache属于重量级的软件;

  (3)Nginx在处理静态文件的效率要比Apache好不少,Apache在处理动态页面效果要 比Nginx高

  (4)Apache在安全性要比Nginx要好。

  所以有一种不经常使用的组合:lnamp。LNMPA

  2)运行模式不一样

  (1)Apache运行PHP是经过加载PHP5模块运行。因为是Apache去加载PHP5模块, 因此每次修改了php.ini配置文件须要重启Apache。

  (2)Nginx运行PHP是经过网络链接php-fpm(fastCGI)方式运行.php-fpm是一个独立的 软件(默认端口:9000)。所以在Nginx下修改了php.ini配置文件须要重启php-fpm

三. LNMP的安装配置

  在以前的LAMP基础上安装,节省安装Mysql时间

  因为

  安装Nginx+php和apache+php的使用方式不一样,因此从新安装php

  (1)软件包和脚本上传到服务器

  使用工具:FileZilla(https://filezilla-project.org/)

   

   

   

  (2)查看并执行install_nginx.sh脚本

  

  赋予脚本权限,并执行安装脚本: chmod u+x install_*

  

  执行脚本:

   

 

 

   

   

1. Nginx配置文件详解:

   

  

  配置文件路径

  

  查看主配置文件

  

  查看文件有时可能不方便,可使用sftp工具链接文本编辑器进行设置查看

  

  

2. 设置工做进程数量

   

3. 单个进程的链接数(并发量)

   

4. 虚拟主机的配置

   

#user nobody;
worker_processes  1;    # 设置工做进程数量
events { worker_connections 1024;    # 单个进程的链接数(并发量)
} http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # 负载均衡服务器配置
 upstream nginx { # ip_hash hash一致性让同一个用户访问同一台服务器(解决session丢失问题)
 ip_hash; # 192.168.174.130 分发到的服务器
        # weight 权重
        # max_fails 分发最大失败次数
        # fail_timeout 失败超时时间
        server 192.168.174.130:8080 weight=1 max_fails=3 fail_timeout=20s; server 192.168.174.131:8081 weight=1 max_fails=3 fail_timeout=20s; } # 配置解压缩
 gzip on; # http的协议版本
    gzip_http_version = 1.0; # 若是是IE就关闭压缩
    gzip_disable 'MSIE [1-6].'; # 须要压缩的文件格式(不建议压图片能够压缩css,js)
    gzip_types image/jpeg; # 推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)
    #gzip_comp_level [1-9] 
    
    
    # 复制一个server端,建立一个新的虚拟机
 server { # 默认端口
        listen       80; # 域名解析
 server_name www.xfsec.com; # 网站根目录
        root /home/xing/xing/project # 缓存图片文件
        location ~ \.(jpeg|jpj|png)${ # 缓存时间为1day
 expires 1d; } # 默认访问页
        location / { # 网站根目录
            # root /home/xing/xing/project
            
            # 分发代理
            proxy_pass   http://nginx; index index.html index.htm } error_page 500 502 503 504  /50x.html; # 配置错误页面
        location = /50x.html { root html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000配置PHP服务
        location ~ \.php$ { # 使用最上层的root变量
            # root html;
            fastcgi_pass   127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 若是Apache和nginx的网站目录是一个,Apache须要使用分布式配置文件,开启此项。
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #         #location ~ /\.ht {
        # deny all;
        #}
 } server { listen 8080; server_name localhost; location / { proxy_pass http://192.168.1.60; } error_page 500 502 503 504  /50x.html; location = /50x.html { root html; } } }

5.启动nginx看看效果

   

  (1)启动Nginx

  

  (2)解析域名,创建网站目录并访问:C:\Windows\System32\drivers\etc(hosts文件)

  

   

   

   

   

   

四.Nginx和PHP关联

1. 安装php-fpm

   

  ①查看修改脚本

   

   

   

   

   

  执行结果查看软件目录

   

   

   

  复制PHP相关配置文件

   

  启动php-fpm

  

2. Nginx +PHP流程图

   

3. Nginx.conf配置修改

  ①配置php服务的路径

   

  ②测试配置文件并重载

   

  ③测试phpinfo文件

   

   

五.配置nginx expires缓存功能

1. Nginx 缓存功能概述

  Nginx经过配置,能够告知浏览器,返回数据的有效时间,浏览器就能够根据数据的有效时间,肯定是否应该到服务器请求,若是数据没有超过有效期,就使用浏览器缓存的数据。

缓存功能开启,是为了用户可以快速获取使用到数据,能够减小服务器请求,下降贷款压力。

   

2. Nginx.conf详细配置

   

  配置缓存选项

   

  上传图片,并测试访问

   

   

  ③重载配置文件

   

   

六. Nginx的gzip压缩设置

1. Nginx的gzip压缩功能概述

  压缩资源,经过网络发送的大小就更加节省资源了,带宽占用变小,启用压缩机制,为了可以快速访问到资源。

  Web服务器进行压缩,浏览器须要进行解压操做。

  目前市场大部分浏览器是支持gzip压缩的。

  IE6及之前不支持

2. Nginx.conf详细配置

   

  配置文件参数保存以后,上传配置文件

   

七.负载均衡的配置

1. 负载均衡原理图

   

  此架构最少须要三台服务器

  经过虚拟机克隆的方式,快速拥有多态虚拟机。

  负载均衡服务器nginx,

    192.168.174.126

  Web1

    192.168.174.130

  Web2

    192.168.174.131

   克隆虚拟机操做步骤:

  克隆虚注意拟机必须处于关机状态

  

   

   

   

   

   

2. 实战Nginx负载均衡服务器

  配置负载均衡服务器

  分发段配置

   

  

  访问域名找虚拟主机,经过虚拟主机,代理到upstream,upstream分发到各web服务器

  Windows域名解析

   

  启动各服务器

  负载均衡服务器只需启动nginx,不在进行PHP解析

  Web服务器启动nginx和php-fpm服务

   

  Web1服务器

   

  Web2服务器

   

  查看分发效果

  为了可以看到分发效果,在web1和web2服务器页面写入不一样的测试标识

  Web1

  [root@localhost 桌面]# vim/usr/local/nginx/html/php61/index.html

  <meta charset=”utf8”>

  Web2

  <h1>时间过得好快呀,又饿了</h1>

 

  Web2

  [root@localhost 桌面]# vim/usr/local/nginx/html/php61/index.html

  <meta charset=”utf8”>

  Web2

  <h1>时间过得好快呀,又饿了</h1>

3. SESSION丢失问题

  不一样的服务器须要经过session判断用户的状态。

  默认session存储到服务器的硬盘文件中,不可以共享。

  session丢失会形成如下后果:

  1. 用户状态没法判断
  2. 验证码没有办法验证,验证码的生成值和校验的服务器不在一块儿

  解决方案:

  1. 入库 memcache mysql redis(推荐)
  2. 硬盘共享方式 磁盘共享方式
  3. ip_hash hash一致性让同一个用户访问同一台服务器
相关文章
相关标签/搜索