学习技巧: 三W一H学习法,分表代表What(是什么)、Why(为什么使用,有什么优点)、When(使用场景有哪些)、How(怎么用)

学前思考

  • Nginx是什么
  • Nginx和Apache处理PHP文件的方式是怎样的
  • Nginx和Apache的区别是什么?
  • Nginx和Apache的使用场景有哪些?
  • 为什么现在大部分网站都采用Nginx服务器?
  • Nginx的正向代理和反向代理是什么?
  • Nginx如何实现负载均衡?

Nginx是什么

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

Nginx和Apache的区别

  • 处理PHP文件方式不一样
  • Apache采用libphp5.so处理PHP文件
  • Nginx采用php-fpm处理PHP文件
  • libphp5.so是同Apache同时一起启动
  • Nginx和php-fpm是独立启动的,并且通过9000端口进行通讯

Apache处理php文件

nginx重发机制_nginx


Nginx处理php文件

nginx重发机制_nginx_02

Nginx对比Apache的优点

Nginx的优点

  • 轻量级,同样是 web 服务,比Apache 占用的内存及资源更少 ;
  • 高并发,Nginx 处理请求是异步非塞的,而Apache 则是阻塞型的,在高并发下Nginx 能保持低资源低消耗高性能;官方数据测试能够支持高达50,000个并发连接响应
  • 高度模块化的设计:编写模块相对简单;
  • 社区活跃,各种高性能模块出品迅速。

Apache的优点

  • rewrite,比Nginx 的rewrite强大;
  • 模块超多,基本想到的都可以找到;
  • 少bug,Nginx 的bug 相对较多;
  • 超稳定

Nginx和Apache使用场景

  • Nginx适合场景:追求性能、处理静态请求以及反向代理 ,比如处理电商网站
  • Apache适合场景:追求稳定、处理动态请求

Nginx正向代理和反向代理

Nginx正向代理代理客户端

nginx重发机制_Apache_03


Nginx反向代理代理服务器端

nginx重发机制_nginx重发机制_04

Nginx实现负载均衡

轮询

nginx重发机制_nginx重发机制_05

加权轮询

概念: 将反向代理的服务器增加权重,当发送请求时,会先请求高权重的服务器;当服务器权重降低比其他服务器低时,去请求其他服务器。

nginx重发机制_nginx_06

IP Hash

概念: 通过IP Hash 的内在算法根据IP来轮询,IP Hash可以解决session不共享的问题。

缺点: 如果服务器宕机了则session会失效

建议: redis解决session不共享问题

nginx重发机制_服务器_07

动静分离

概念:

  • 有些不需要后台处理的(CSS、JS、Html、jpg等等)文件,称为静态文件
  • 动静态文件的区分时按照一定的规则把不变的资源和经常变的资源区分开
  • 可以将静态资源做缓存操作提高资源响应速度

负载均衡的配置

# 修改配置文件
[root@learncentos bin]# vim /usr/local/nginx/conf/nginx.conf
user  nginx nginx;
# nginx 多核绑定
worker_processes  2;
worker_cpu_affinity 01 10;
events {
    worker_connections  65535;
}

# 后端服务器
http {
        upstream webalias{
        server 192.168.106.131:8080;
        server 192.168.106.131:8081;
     }

server {
                listen 80;
                server_name www.jacknum1.cn;

                location / {
                proxy_pass http://webalias;
                }
        }
[root@learncentos conf]# lnmp nginx reload  #重新加载
[root@learncentos conf]# vim /etc/security/limits.conf 
nginx            -       nofile          65536

#开启两个后端服务器的httpd
# 真机测试
[root@foundation25 ~]# curl www.jacknum1.cn