服务器のNginx

1.描述下大流量高并发的网站解决方案:

1.nginx负载均衡

2.nginx  web cache 缓存

3.php代码静态化

4.redis

5.sql语句索引的使用

6.主从复制,读写分离(主从分流)

7.分库分表或分区

8.磁盘分布

DNS负载均衡->负载均衡器->集群服务器->web服务器(NGINX)->(PHP)静态缓存(tp,smarty)->文件数据缓存(tp,mongodb)->内存数据缓存(memcache,redis)->给数据加索引

 

2.DNS负载均衡:

dns负载均衡是通过DNS服务器实现的,主要用于把请求均匀的分布到nginx服务器上。其实真是情况中可能是用来根据地域区分请求。但是一个地域中的请求还算需要均匀的分配到nginx服务器上的;

在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的

 

3.Nginx负载均衡:

nginx作为反向代理服务器,主要负责把请求均匀的分摊到应用服务器中。为了达到均匀,Nginx有五种负载均衡策略。

 

4.Nginx的功能:

作为http server(代替apache,对PHP需要FastCGI处理器支持)
反向代理服务器
实现负载均衡
虚拟主机
FastCGI:Nginx本身不支持PHP等语言,但是它可以通过FastCGI来将请求扔给某些语言或框架处理;

 

4.Nginx与apache:

Nginx     是异步,非阻塞,轻量级,高并发特性

apache  是同步,阻塞,非轻量级,不支持高并发

轻量级,同样起web 服务,比apache 占用更少的内存及资源 
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单 
最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程 

 

5. 反向代理服务器的优点?
ans:反向代理服务器可以隐藏服务器的存在和特性,充当web 与服务器的中间件,对于安全方面是很好的

 

6. nginx如何实现高并发?
ans:一个主进程,多个工作进程,每个工作进程可以处理多个请求,并且是异步的处理该请求,非阻塞性质的web服务器。

niginx的高并发得益于采用的是epoll模型(异步非阻塞)

apach采用的是select模型(同步阻塞)

 

7.nginx配置跨域?

server{
    # 监听9099端口
    listen 9099;
    # 域名是localhost
    server_name localhost;
    #凡是localhost:9099/api这个样子的,都转发到真正的服务端地址http://localhost:9871 
    location ^~ /api {
        proxy_pass http://localhost:9871;
    }    
}

8.nginx安装

yum install pcre-devel -y       安装包

tar xzf nginx-1.6.2.tar.gz       解压安装包

cd nginx-1.6.2                       进入安装包

ls                                        查看

pwd                                     查看

make 

make install

user/local/nginx/sbin/nginx     启动

ps -ef| grep nginx             查看进程是否启动

/user/local/nginx/sbin/nginx -s reload   重启nginx

vi nginx config                 编辑配置文件

kill -QUIT `cat/var/run/nginx.pid`    完美重启, 平滑重启(在不停止nginx的情况下重启nginx)

       TERM/INT                                         快速重启

pkill nginx                                          平时用的最多的是先终止再启动

-v                                                       查看版本

-V                                                      查看参数(升级可能会用)

 

9.nginx 日志

error_log   /user/local/nginx/logs/error.log

错误等级:debug->info->notice->warn->error->crit

 

10.工作模式及连接上线

use epoll      多路复用io

work_connection 102400             单个后台进程最大连接并发数(最大连接数=进程数*连接数)

multi_accept_on                        尽可能接受多的请求

#设定http服务器,利用他的反向代理提高负载均衡支持

http{

 #设定mime类型,类型有mime.type 定义

include   mime.types;

                 default_type:

 

#设定日志格式

access_log       /user/local/nginx/log/ngin/access.log;

sendfile on;         是否调用sendfile函数来输出文件

autoindex on;     开启目录访问

tcp_nopush on;   防止网络阻塞

***keepalive_timeout 60;              客户端到服务端持久链接有效时间,对后继请求避免重建连接

}

#开启gzip压缩

gzip on;           开启gzip压缩(压缩js,csss,下载变快)

gzip_min_length  1k;

gzip_buffers  4 16k;

gzip_http_version 1.1;

gzip_comp_level 2;                     #压缩级别越大,压缩比率越大(2-9),同时占用cpu更多

gzip_types  text/js/css               #压缩文件类型

 

 

#文件流

client_max_body_size    10m;              #允许客户端请求的最大文件字节数

client_body_buffer_size  128k;             #缓冲区代理缓冲客户端请求的最大字节数

 

proxy_connect_timeout 90;                #nginx跟后端服务器连接超时时间

proxy_send_timeout  90;                      #后端服务器数据回传时间(代理发送超时)

proxy_read_timeout 90;                     #后端服务器读取超时

 

#服务

server{

listen  80;                        监听80端口

server_name    www.cyh.com;                       定义访问路径

access_log     log/access.log  main;               本虚拟主机访问日志

root                /data/webapp/cyh                      服务器默认网站根目录位置

proxy_next_upstream http_502 http_504 error timeout invalid_header                          如果后台报错或超时,自动转发到upstream负载均衡池的另一台服务器,实现故障转移

proxy_pass http://www.iworker.cn                           请求转到后端定义的均衡模块中

 

 

#配置Nginx动静分离,定义静态页面直接重Nginx发布目录读取

location ~.*\.(html|gif|jp)${

 root /data/www/cyh;

 expire: 3d;

 

#配置 php脚本请求全部转发到fastCGI处理,使用fastCGI默认配置

location ~\.php${

         root  /root;

         fastcgi_pass   192.168.38:8080;

         fastcgi_index   index.php;

         fastcgi_param

}

 

 

 

                        

proxy_read_timeout 90;                       #l连接成功后,后端(php)响应时间(代理接受超时)

 

 

 



 

posted @ 2018-12-18 23:03  你脑子有bug  阅读(270)  评论(0编辑  收藏  举报