Nginx基础入门(非常基础)

1.Nginx基本概念

  1. Nginx是什么,能做什么
    Nginx(engine X)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上Nginx的并发能力在同类型网页服务器中表现较好。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。
  2. 反向代理
    正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
    Nginx基础入门(非常基础)
    文章图片

    反向代理:客户端不需要做任何配置就可以访问,只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实的服务器IP地址。
    Nginx基础入门(非常基础)
    文章图片
  3. 负载均衡
    单个服务器解决不了高并发访问的问题,我们可以增加服务器的数量,然后将请求分发到各个服务器上,将原来集中到单个服务器上的请求改为分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
    Nginx基础入门(非常基础)
    文章图片
  4. 动静分离
    为了加快网站的解析速度,可以把动态资源和静态页面由不同的服务器来解析,降低单个服务器的压力。
    Nginx基础入门(非常基础)
    文章图片
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#建立软链接指向存在的就可以了

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

  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基础入门(非常基础)
    文章图片
  4. 具体配置
    1)在Windows系统的host文件进行域名和IP的对应配置
    打开文件夹C:\Windows\System32\drivers\etc,在hosts下配置
    2)在nginx下进行请求转发的配置(反向代理)
    Nginx基础入门(非常基础)
    文章图片
反向代理实例二:
  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 { listen9001; server_name192.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基础入门(非常基础)
    文章图片
  4. 测试
    访问http://192.168.3.128/edu/test.html,可以看到实现了负载均衡
  5. nginx分配服务器策略
    1)轮询(默认):按时间顺序分配,服务宕机会剔除
    2)weight:代表权重,默认为1,权重越高被分配客户端越多
upstream myserver{ server 192.168.3.128:8080weight 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基础入门(非常基础)
    文章图片
  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基础入门(非常基础)
    文章图片
  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 keepalivedglobal_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 #检测脚本执行间隔 weight2 #当前服务器权重 }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`-eq0]; 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.

    推荐阅读