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)响应时间(代理接受超时)