Nginx基础入门(非常基础)

1.Nginx基本概念

  1. Nginx是什么,能做什么
    Nginx(engine X)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并发能力在同类型网页服务器中表现较好。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。
  2. 反向代理
    正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
    Nginx基础入门(非常基础)_第1张图片
    反向代理:客户端不需要做任何配置就可以访问,只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实的服务器IP地址
    Nginx基础入门(非常基础)_第2张图片
  3. 负载均衡
    单个服务器解决不了高并发访问的问题,我们可以增加服务器的数量,然后将请求分发到各个服务器上,将原来集中到单个服务器上的请求改为分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
    Nginx基础入门(非常基础)_第3张图片
  4. 动静分离
    为了加快网站的解析速度,可以把动态资源和静态页面由不同的服务器来解析,降低单个服务器的压力。
    Nginx基础入门(非常基础)_第4张图片

2.Nginx安装、常用命令和配置文件

  1. 在Linux系统中安装Nginx
  • 安装pcre依赖:压缩文件放入Linux系统中解压tar -zxvf pcre-8.42.tar.gz ;进入目录cd pcre-8.42后执行./configure命令;之后编译安装make && make install;查看是否安装成功pcre-config --version。
  • 安装其他依赖(zlib/openssl):yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
  • 安装Nginx:和安装pcre一样,安装成功后 cd /usr/local 可以查看有Nginx文件夹
    到sbin文件夹下执行./nginx,我在执行过程中遇到如下问题
问题:
./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
解决:
find / -type f -name *libpcre.so.*

ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1#建立软链接指向存在的就可以了

conf文件夹下配置文件可以查看默认端口80,可以访问,显示如下则已经安装运行成功:
Nginx基础入门(非常基础)_第5张图片

  1. Nginx常用命令
1.使用的前提条件,进入到nginx的目录
/usr/local/nginx/sbin
2.查看nginx的版本号
./nginx -v
3.启动nginx
./nginx
4.关闭nginx
./nginx -s stop
5.重新加载nginx(不用重启可以重新加载配置文件)
./nginx -s reload
  1. Nginx配置文件简介

1.位置/usr/local/ngix/conf/mginx.conf
2.nginx由三部分组成:全局块、events、http
全局块:从配置文件开始到events之间的内容,主要会设置一下影响nginx服务器整体运行的配置命令,比如worker_processes 1; 值越大,可以支持并发处理量也越多
events:涉及的指令主要影响nginx服务器与用户的网络连接,比如worker_connections 1024;支持的最大连接数
http:包括http全局块,server块(包括全局server、location块)

3.Nginx配置实例1–反向代理

反向代理实例一:

  1. 实现效果
    1)打开浏览器,在浏览器中输入www.123.com,跳转到Linux系统的Tomcat的主页面中
  2. 准备工作
    1)Tomcat安装到Linux,使用默认端口8080,启动
    2)对外开放端口,或者关闭防火墙(自己试的时候)
    3)在Windows浏览器访问Tomcat
  3. 访问过程分析
    Nginx基础入门(非常基础)_第6张图片
  4. 具体配置
    1)在Windows系统的host文件进行域名和IP的对应配置
    打开文件夹C:\Windows\System32\drivers\etc,在hosts下配置
    2)在nginx下进行请求转发的配置(反向代理)
    Nginx基础入门(非常基础)_第7张图片

反向代理实例二:

  1. 实现效果
    使用nginx反向代理,根据访问的路径跳转到不同端口的服务中
    nginx监听端口9001
    访问http://127.0.0.1:9001/edu/直接跳转到127.0.0.1:8080
    访问http://127.0.0.1:9001/vod/直接跳转到127.0.0.1:8081
  2. 准备工作
    1)分别启动两个Tomcat,端口号8080、8081
    2)创建文件夹和测试页面
  3. 具体配置
    nginx.conf
server {
        listen       9001;
        server_name  192.168.3.128;

        location ~ /edu/ {
            proxy_pass http://127.0.0.1:8080;
        }
		location ~ /vod/ {
            proxy_pass http://127.0.0.1:8081;
        }
 }

对外开放端口号8080/8081/9001

  1. 最终测试

访问http://192.168.3.128:9001/edu/test.html 和 http://192.168.3.128:9001/vod/test.html

location配置说明

=:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求;
~:用于表示uri包含正则表达式,并且区分大小写;
~*:用于表示uri包含正则表达式,并且不区分大小写;
-~:用于不含正则表达式的uri前,要求nginx服务器找到表示uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。
注意:如果uri中包含正则表达式,则必须要有~或者 ~*标识

4.Nginx配置实例2–负载均衡

  1. 实现效果
    1)浏览器地址栏输入地址 http://192.168.3.128/edu/test.html,负载均衡效果,平均到8080和8081端口中
  2. 准备工作
    1)准备两台Tomcat,端口分别为8080和8081
    2)建文件夹和test.html
  3. 具体配置
    Nginx基础入门(非常基础)_第8张图片
  4. 测试
    访问http://192.168.3.128/edu/test.html,可以看到实现了负载均衡
  5. nginx分配服务器策略
    1)轮询(默认):按时间顺序分配,服务宕机会剔除
    2)weight:代表权重,默认为1,权重越高被分配客户端越多
	upstream myserver{
		server 192.168.3.128:8080  weight 10;
		server 192.168.3.128:8081;
	}

3)ip_hash:每个请求按访问IP的hash结构分配,这样每个访客固定访问一个后端服务器,可以解决session问题

upstream myserver{
		ip_hash
		server 192.168.3.128:8080;
		server 192.168.3.128:8081;
	}

1.3之后可以同时使用weight和ip_hash
4)fair(第三方):按后端服务器响应时间分配,响应时间短优先分配

upstream myserver{
		server 192.168.3.128:8080;
		server 192.168.3.128:8081;
		fair
	}

5.Nginx配置实例3–动静分离

  1. 什么是动静分离?
    动态请求和静态请求分开,可以理解成nginx静态请求访问静态资源服务器,Tomcat负责动态请求。
  2. 准备工作
    在Linux上建文件夹装静态资源,根目录下建/data/image放图片和/data/www放html页面
  3. 具体配置
    Nginx基础入门(非常基础)_第9张图片
  4. 测试
    访问http://192.168.3.128/image/1.png和http://192.168.3.128/www/test.html

6.Nginx配置高可用集群

  1. 什么是nginx高可用?
    nginx宕机,请求无法实现需要的效果,为解决这个问题,可以配置高可用集群,即配置多台nginx服务器,分为主服务器、备服务器,如果主服务器宕机,则切换到备服务器。对外使用同一个虚拟IP,通过虚拟IP访问,需要keepalived。
    Nginx基础入门(非常基础)_第10张图片
  2. 配置高可用准备工作
    1)需要两台服务器
    2)在两台服务器安装nginx
    3)在两台服务器安装keepalived
  3. 安装keepalived
    cd /usr(选择目录)
    yum install keepalived -y
    rpm -q -a keepalived(查看是否安装成功)
    安装之后配置文件在/etc/keepalived/keepalived.conf
  4. 完成高可用配置
    1)主机配置
! Configuration File for keepalived

global_defs { #全局配置
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL  #访问到主机 /etc/hosts下面可以配置
}

vrrp_script chk_http_port {
	script "/usr/local/src/nginx_check.sh" #执行脚本
	
	interval 2 #检测脚本执行间隔
	
	weight  2 #当前服务器权重 
}

vrrp_instance VI_1 {
    state MASTER 		 #服务器类型,从机BACKUP
    interface eth0  		 #网卡
    virtual_router_id 51  #主备机必须相同
    priority 100 				 #主备机优先级,主机较大,备机较小比如从机设为90
    advert_int 1				 #默认每隔1秒发一次心跳
    authentication {		 #校验
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.3.50 		 #虚拟IP,可以配置多个
    }
}

/usr/local/src/nginx_check.sh文件:

#!/bin/bash
A=`ps -C nginx -no-header  |wc -l`
if [ $A -eq 0 ];then
	/usr/local/nginx/sbin/nginx
	sleep
	if [ `ps -C nginx --no-header |wc  -l`  -eq  0];then
		killall keepalived
	fi
fi 
  1. 启动nginx和keepalived,两台均启动
./nginx
systemctl start keepalived.service(或者CentOS6.x用service keepalived start)
  1. 测试(保证端口80对外开放的前提下)
    1)浏览器访问http://192.168.3.50/
    2)将主机stop后访问http://192.168.3.50/依然ok

学习整理于nginx.

你可能感兴趣的