目录
准备工作
安装Nginx及相关组件
a、yum安装:
b、tar安装:
c、也可以yum安装pcre、zlib、openssl,tar安装nginx
启动Nginx
简单配置Nginx
Nginx配置静态web服务器
Nginx实现负载均衡(不要使用刷新按钮,在地址栏回车)
1.负载均衡策略
2.配置Nginx的负载均衡与分发策略
Nginx其他配置
总结
Nginx和Apache的区别:
准备工作
 下载或使用yum安装:
 wget --no-check-certificate http://www.openssl.org/source/openssl-fips-2.0.10.tar.gz
 wget http://zlib.net/zlib-.2.11.tar.gz
 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
 wget http://nginx.org/download/nginx-1.10.2.tar.gz
安装c++编译环境,如已安装可略过
 yum install gcc-c++
 yum -y install gcc gcc-c++ 
查看内核版本
 cat /proc/version
 查看系统位数 
 getconf WORD_BIT
 查看gcc版本
 gcc --version
安装Nginx及相关组件
 https://blog.csdn.net/weixin_42389270/article/details/121553361
 a、yum安装:
 
 yum -y install pcre pcre-devel  zlib zlib-devel  openssl openssl-devel
在线安装
 yum -y install gcc gcc-c++                     或者 yum install gcc-c++
 yum -y install pcre pcre-devel
 yum -y install zlib zlib-devel
 yum -y install openssl openssl-devel
yum -y install nginx(如果使用该命令要新建配置/etc/yum.repos.d/nginx.repo)
     [nginx]     
     name=nginx repo     
     baseurl=http://nginx.org/packages/centos/7.5/$basearch/     
     gpgcheck=0     
     enabled=1
 b、tar安装:
 
 openssl安装
 [root@localhost src]# tar zxvf openssl-fips-2.0.10.tar.gz
 [root@localhost src]# cd openssl-fips-2.0.10
 [root@localhost openssl-fips-2.0.10]# ./config && make && make install
pcre安装
 [root@localhost src]# tar zxvf pcre-8.43.tar.gz
 [root@localhost src]# cd pcre-8.43
 [root@localhost pcre-8.40]# ./configure && make && make install
zlib安装
 [root@localhost src]# tar zxvf zlib-1.2.11.tar.gz
 [root@localhost src]# cd zlib-1.2.11
 [root@localhost zlib-1.2.11]# ./configure && make && make install
nginx安装
 [root@localhost src]# tar zxvf nginx-1.16.1.tar.gz
 [root@localhost src]# cd nginx-1.16.1
 [root@localhost nginx-1.10.2]# ./configure && make && make install
 解压后进入到nginx文件
 ./configure 执行这个命令
 产生一个新文件Makefiles
 make 
 make install
 cd /usr/local/nginx/sbin 
 有个命令./nginx
 ps -ef|grep nginx
 c、也可以yum安装pcre、zlib、openssl,tar安装nginx
 
 启动Nginx
 
 查看nginx安装位置
 whereis nginx
进入nginx启动
 cd /usr/local/nginx/sbin
 ./nginx
 用ps -aux|grep nginx查看状态
开启端口:
 #添加端口
 firewall-cmd --zone=public --add-port=80/tcp --permanent(永久) 
 #查看所有打开的端口:
 firewall-cmd --zone=public --list-ports
 #重新载入
 firewall-cmd --reload
启动成功打开浏览器访问http://localhost可以看到nginx页面
如果报错:error while loading shared libraries: libpcre.so.1: cannot open shared 
 a.用whereis libpcre.so.1命令找到libpcre.so.1在哪里
 b.用ln -s /usr/local/lib/libpcre.so.1 /lib64 命令做个软连接就可以了
 c.用./nginx启动Nginx
 nginx的基本操作:
 启动
 /usr/local/nginx/sbin/nginx
 停止/重启
 /usr/local/nginx/sbin/nginx -s stop(停止)|reload(重启)
 命令帮助
 /usr/local/nginx/sbin/nginx -h
 验证配置文件
 /usr/local/nginx/sbin/nginx -t
 查看状态
 ps -aux | grep nginx
 配置文件
 vi /usr/local/nginx/conf/nginx.conf
简单配置Nginx
 打开nginx配置文件,位于nginx目录下的conf文件夹下
 设置几个站点:
server {listen       81;server_name  nginx.test1.com;location / {root     html;index    index.html index.htm index.jsp;}}
server {  listen       82;  server_name  nginx.test2.com;        location / {  root   html;  index  index.html index.htm;  }  }
 保存退出重启nginx
Linux配置完毕了,使用另一台电脑而非安装nginx的电脑,如windows系统,配置一下host在
 "C:\Windows\System32\drivers\etc"下的hosts中配置一下域名重定向:
 192.168.174.131 nginx.test1.com nginx.test2.com 
然后测试一下这个域名是否正确指向了这个IP上及端口是否可以访问
 telnet nginx.test1.com 81
 telnet nginx.test2.com 82
没有问题可以用浏览器访问以上地址
 Nginx配置静态web服务器
 
server { listen 80; server_name localhost;     access_log /opt/static/log/webroot/access.log; error_log  /opt/static/log/webroot/error.log; location / { root /opt/static/webroot; index index.html; } error_page 404 /404.html;    error_page 500 502 503 504 /50x.html; location = /50x.html {root html;}
}Nginx实现负载均衡(不要使用刷新按钮,在地址栏回车)
1.负载均衡策略
 1)、轮询
 这种是默认的策略,把每个请求按顺序逐一分配到不同的server,如果server挂掉,能自动剔除。
upstream  cssl.com {   server   192.168.174.128:8080;    (centos6.5 tomcat8) server   192.168.174.129:8081;     (centos7.0 tomcat7)server   192.168.174.131:8080;    (centos7.5 tomcat9)  
}upstream  cssl.com {   server   192.168.158.130:8090;    server   192.168.158.131:8090;     server   192.168.158.1:8080;server   192.168.158.1:8090;    
}
 如果同一服务器(ip)启动两个tomcat需要修改三个端口8080|8005|8009
2)、最少连接
 把请求分配到连接数最少的server
upstream  fengzp.com {   least_conn;server   192.168.99.100:42000; server   192.168.99.101:42001;  
}3)、权重
 使用weight来指定server访问比率,weight默认是1。以下配置会是server2访问的比例是server1的两倍
upstream  fengzp.com {   server   192.168.99.100:42000 weight=1; server   192.168.99.101:42001 weight=2;  
}4)、ip_hash
 每个请求会按照访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一server进行处理,可以解决session的问题。如果server挂掉,能自动剔除。
upstream  fengzp.com {   ip_hash;server   192.168.99.100:42000; server   192.168.99.101:42001;  
}
 ip_hash可以和weight结合使用。
2.配置Nginx的负载均衡与分发策略
  通过在upstream参数中添加的应用服务器IP后添加指定参数即可实现,如:
 upstream tomcatserver {  server 192.168.174.128:8080 weight=3;  server 192.168.174.129:8081;  }   server {  listen       80;  server_name  nginx.test.com;  location / {  proxy_pass   http://tomcatserver;              }  } 
通过以上配置,便可以实现,在访问nginx.test.com这个网站时,由于配置了proxy_pass地址,所有请求都会先通过nginx反向代理服务器,在服务器将请求转发给目的主机时,读取upstream为 tomcatsever的地址,读取分发策略,配置tomcat1权重为3,所以nginx会将大部分请求发送给128服务器上的tomcat1,也就是8080端口;较少部分给tomcat2来实现有条件的负载均衡,当然这个条件就是服务器1、2的硬件指数处理请求能力。
      
       
       
 Nginx其他配置
 
upstream myServer {  server 192.168.72.49:9090 down;   server 192.168.72.49:8080 weight=2;   server 192.168.72.49:6060;   server 192.168.72.49:7070 backup;   
} 1)down
     表示单前的server暂时不参与负载
 2)Weight
     默认为1.weight越大,负载的权重就越大
 3)max_fails
     允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
 4)fail_timeout
     max_fails 次失败后,暂停的时间
 5)Backup
  其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
 
 使用Nginx的高可用 
       除了要实现网站的高可用,也就是提供n多台服务器用于发布相同的服务,添加负载均衡服务器分发请求以保证在高并发下各台服务器能相对饱和的处理请求。同样,负载均衡服务器也需要高可用,以防如果负载均衡服务器挂掉了,后面的应用服务器也紊乱无法工作。
      实现高可用的方案:添加冗余。添加n台nginx服务器以避免发生上述单点故障。具体方案详见下文:keepalive+nginx实现负载均衡高可用
 总结 
 
     负载均衡不论是各种软件或硬件(F5:2019.3.12 F5 Networks以 6.7 亿美元的价格收购Nginx)上的解决方案,主要还是将大量的并发请求按照一定的规律分发给不同的服务器处理,从而减少某台服务器的瞬时压力,提高网站的抗并发能力。nginx在负载均衡的应用之所以广泛,笔者认为这归功于它的灵活配置,一个nginx.conf文件解决大部分问题,不论是nignx创建虚拟服务器、nginx的反向代理服务器,还是本文介绍的nginx的负载均衡,几乎都在这个配置文件中进行。服务器上只负责把nginx搭好,跑起来即可。而且它本身轻量级,不需要占用服务器太多资源就可以达到较好的效果。
    
 Nginx和Apache的区别:
 
    1. apache 相对于nginx 的优点:
         rewrite ,比nginx 的rewrite 强大
         动态页面,nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。
         模块超多,基本想到的都可以找到
         少bug,nginx的bug相对较多超稳定
    2. nginx相对于apache的优点:
         轻量级,同样起web 服务,比apache占用更少的内存及资源 ,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达50000 个并发连接数的响应, 这归功于Nginx为我们选择了epoll and kqueue作为开发模型.
         高并发,nginx处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
         高度模块化的设计,编写模块相对简单,社区活跃,各种高性能模块出品迅速
         Nginx本身就是一个反向代理服务器
         负载均衡能力突出,Nginx既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多
3. 核心区别:apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程