Nginx安装与基本使用

一、Nginx简介

查看:nginx_百度百科

二、Nginx环境搭建

  1. 下载
    1. 官方网站:http://nginx.org
    2. Nginx 有 Windows 版本和 Linux 版本,但更推荐在 Linux 下使用 Nginx
    3. 下载nginx-1.12.2.tar.gz的源代码文件:wget http://nginx.org/download/nginx-1.12.2.tar.gz
  2. 安装
    1. 安装前准备
      1. nginx是C语言开发,因此同样需要gcc,还需要安装pcre,因为nginx的http模块需要用到pcre,还需要zlib,它提供了解压缩,还需要openssl,Nginx的安装需要Linux安装相关的几个库,否则编译会出现错误,这几个库分别是:Nginx的安装需要Linux安装相关的几个库,否则配置和编译会出现错误,这几个库分别是:
      2. gcc编译器是否安装?
        1. 检查是否安装:yum list installed | grep gcc
        2. 执行安装:yum install gcc -y
      3. openssl库是否安装?
        1. 检查是否安装:yum list installed | grep openssl
        2. 执行安装:yum install openssl openssl-devel -y
      4. pcre库是否安装?
        1. 检查是否安装:yum list installed | grep pcre
        2. 执行安装:yum install pcre pcre-devel -y
      5. zlib库是否安装?
        1. 检查是否安装:yum list installed | grep zlib
        2. 执行安装:yum install zlib zlib-devel -y
      6. 一次性安装,执行如下命令:
        1. yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y
    2. 正式安装
      1. 解压下载下来的nginx文件,执行命令:tar -zxvf nginx-1.12.2.tar.gz
      2. 切换至解压后的nginx主目录,执行命令:cd nginx-1.12.2
      3. 在nginx主目录nginx-1.12.2下执行命令: ./configure  --prefix=/usr/local/nginx
        (其中--prefix是指定nginx安装路径)
      4. 执行命令进行编译:make
      5. 执行命令进行安装:make install
  3. 启动
    1. 启动nginx执行命令:
    2. 普通启动:
      1. 切换到nginx安装目录的sbin目录下,执行:./nginx
    3. 通过配置文件启动:
      1. ./nginx -c /usr/local/nginx/conf/nginx.conf
      2. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
      3. (其中-c是指定配置文件,配置文件的路径只能用绝对路径)
    4. 检查Nginx是否启动:
      1. 通过查看进程:ps -ef | grep nginx
      2. nginx 体系结构由 master 进程和其 worker 进程组成
      3. master 进程读取配置文件,并维护 worker 进程,而 worker 进程则对请求进行实际处理
  4. 关闭
    1. Nginx的关闭有多种方式:
    2. 优雅关闭Nginx:
      1. 找出nginx的进程号:ps -ef | grep nginx
      2. 执行命令:kill -QUIT 主pid
      3. 其中pid是主进程号的pid(master process),其他为子进程pid(worker process)
    3. 快速关闭Nginx:
      1. 找出nginx的进程号:ps -ef | grep nginx
      2. kill -TERM 主pid
    4. 重启Nginx:
      1. ./nginx -s reload
  5. 配置检查
    1. 当修改Nginx配置文件后,可以使用Nginx命令进行配置文件语法检查,用于检查Nginx配置文件是否正确;
    2. 检查Nginx配置文件是否正确:
    3. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
  6. 其他
    1. Linux上查看nginx版本:/usr/local/nginx/sbin/nginx -V
    2. -v (小写的v)显示 nginx 的版本
    3. -V (大写的V)显示 nginx 的版本、编译器版本和配置参数
  7. Windows下环境搭建
    1. 在官方网站下载最新windows版的nginx:http://nginx.org/en/download.html
    2. 将下载下来的nginx压缩包解压到一个目录下,解压后该软件就可以启动使用了 
    3. 启动方式1:双击解压目录下的nginx.exe文件即可运行nginx;
    4. 启动方式2:进入dos窗口,切换到nginx主目录下,在dos窗口执行命令:start nginx
    5. 关闭方式1:在资源管理器杀掉Nginx进程(有两个进程)
    6. 关闭方式2:在dos窗口切换到Nginx安装主目录下执行命令:nginx -s stop

三、Nginx配置文件

  1. Nginx的核心配置文件主要由三个部分构成:
    1. 基本配置
    2. events配置
    3. http配置
      1. 基本配置
      2. 多个server配置

四、Nginx主要应用

静态网站,负载均衡,静态代理,动静分离,虚拟主机

五、静态网站

  1. Nginx是一个HTTP的web服务器,可以将服务器上的静态文件(如HTML、图片等)通过HTTP协议返回给浏览器客户端
  2. server {  
        listen 80; #端口号  
        location /ace {  
            root /opt/www/; #静态文件路径
        } 
    }

六、负载均衡

  1. 负载均衡概述
    1. 在网站创立初期,我们一般都使用单台机器对外提供集中式服务
    2. 但是随着业务量的增大,我们一台服务器不够用,此时就会把多台机器组成一个集群对外提供服务
    3. 但是,我们网站对外提供的访问入口通常只有一个,比如 www.web.com
    4. 那么当用户在浏览器输入www.web.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情
    5. 负载均衡通常是指将请求"均匀"分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀
  2. 负载均衡实现方式
    1. 硬件负载均衡
      1. 比如 F5、深信服、Array 等
      2. 优点是有厂商专业的技术服务团队提供支持,性能稳定
      3. 缺点是费用昂贵,对于规模较小的网络应用成本太高
    2. 软件负载均衡
      1. 比如 Nginx、LVS、HAProxy 等
      2. 优点是免费开源,成本低廉
      3. 开源项目实现了负载均衡
    3. Nginx负载均衡
      1. Nginx如何实现负载均衡:(通过在Nginx的nginx.conf文件进行配置即可实现)
      2.  
      3. 配置如下:(配置2步即可)
      4. ①在http模块加上:(举例)
        upstream www.myweb.com { 
                 server  127.0.0.1:9100 weight=3; 
                  server  127.0.0.1:9200 weight=1;  
      5. 其中weight=1表示权重,用于后端服务器性能不均的情况,访问比率约等于权重之比,权重越大访问机会越多
      6. upstream是配置nginx与后端服务器负载均衡非常重要的一个模块,并且它还能对后端的服务器的健康状态进行检查,若后端服务器中的一台发生故障,则前端的请求不会转发到该故障的机器;
      7. ②在server模块里添加:(举例)
        location /myweb {
            proxy_pass http://www.myweb.com;
        }
      8. 其中 www.myweb.com 字符串要和 upstream 后面的字符串相等
    4. Nginx常用负载均衡策略
      1. Nginx常用负载均衡策略:
      2. 轮询(默认)
        1. 每个请求轮流分配到不同的后端服务器,如果后端服务器down掉,将自动剔除
        2. upstream backserver { 
              server 127.0.0.1:8080; 
              server 127.0.0.1:9090; 
      3. 权重
        1. 每个请求按一定比例分发到不同的后端服务器,weight值越大访问的比例越大,用于后端服务器性能不均的情况;
        2. upstream backserver { 
              server 192.168.0.14 weight=5; 
              server 192.168.0.15 weight=2; 
      4. ip_hash
        1. ip_hash也叫IP绑定,每个请求按访问ip的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话Session丢失的问题
        2. upstream backserver { 
              ip_hash; 
              server 127.0.0.1:8080; 
              server 127.0.0.1:9090; 
          }
      5. 最少连接
        1. web请求会被转发到连接数最少的服务器上
        2. upstream backserver { 
              least_conn;
              server 127.0.0.1:8080; 
              server 127.0.0.1:9090; 
    5. 负载均衡其他几个配置
      1. upstream backserver { 
            server 127.0.0.1:9100;
            server 127.0.0.1:9200 backup; (其它所有的非backup机器down的时候,才请求backup机器) 
      2. upstream backserver { 
            server 127.0.0.1:9100;
            server 127.0.0.1:9200 down; (down表示当前的server是down状态,不参与负载均衡) 

七、静态代理

  1. 把所有静态资源的访问改为访问nginx,而不是访问tomcat,因为nginx更擅长于静态资源的处理,性能更好,效率更高
  2. 所以在实际应用中,我们将静态资源比如图片、css、html、js等交给nginx处理,而不是由tomcat处理
  3. Nginx静态代理如何实现?(通过在Nginx的nginx.conf文件进行配置即可实现)
  4. 步骤如下:
    1. 通过在nginx.conf配置文件中添加静态资源的location,比如:
    2. #当访问静态资源,则从linux服务器/opt/static目录下获取(举例)
      location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
              root /opt/static;  #指定静态资源所在的目录,nginx的首页也是一个静态资源
      }
      1. 其中:
        1. ~ 表示正则匹配,也就是说后面的内容可以是正则表达式匹配
        2. 第一个点 . 表示任意字符
        3. * 表示一个或多个字符
        4. \. 是转移字符,是后面这个点的转移字符
        5. | 表示或者
        6. $ 表示结尾
        7. 整个配置表示以 .后面括号里面的这些后缀结尾的文件都由nginx处理
    3. 放置静态资源的目录,要注意一下目录权限问题,如果权限不足,给目录赋予权限

八、动静分离

  1. Nginx的负载均衡 和 静态代理 结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景
  2. 动态资源,如jsp由tomcat或其他web服务器完成
  3. 静态资源,如图片、css、js等由nginx服务器完成
  4. 它们各司其职,专注于做自己擅长的事情
  5. 动静分离充分利用了它们各自的优势,从而达到更高效合理的架构
  6. 动静分离示例:
    1. 负载均衡Nginx配置:
      1. upstream www.web.com { 
            server  127.0.0.1:9100 weight=5; 
            server  127.0.0.1:9200 weight=2;  
        }
            
        upstream static.web.com { 
            server  127.0.0.1:81 weight=1; 
            server  127.0.0.1:82 weight=1;  
        }
      2. location /web{
            proxy_pass http://www.web.com;
        }

        location ~ .*/(css|js|img|images) {
            proxy_pass http://static.web.com;
        }

    2. 静态代理Nginx配置:

      1. location ~ .*/(css|js|img|images) {
            root /opt/static;
        }

    3. 这样就可以实现动静分离了。

九、虚拟主机

  1. 虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站
  2. Nginx提供虚拟主机的功能,就是为了让我们不需要安装多个Nginx,就可以运行多个网站
  3. Nginx下,一个server标签就是一个虚拟主机
  4. Nginx的虚拟主机就是通过nginx.conf中server节点指定的,想要设置多个虚拟主机,配置多个server节点即可
  5. 配置虚拟主机通过有下面两种方式:
  6. 基于域名的虚拟主机:
    1. 基于域名的虚拟主机是最常见的一种虚拟主机。
    2. server {
              listen       80;
              server_name  www.myweb.com;
              location /myweb {
                 proxy_pass http://www.myweb.com;
              }
      }
    3. 需要修改一下本地的hosts文件,文件位置:C:\Windows\System32\drivers\etc\hosts
    4. 在hosts文件配置:192.168.208.128 www.myweb.com
    5. 前面是Linux的IP,后面是你自定义的域名
  7. 基于端口的虚拟主机:
    1. 基于端口的虚拟主机配置,使用端口来区分
    2. 浏览器使用 同一个域名+端口 或 同一个ip地址+端口访问
    3. server {
          listen 8080;
          server_name www.myweb.com;
          location /myweb {
                 proxy_pass http://www.myweb.com;
          }
      }
    4. server {
          listen 9090;
          server_name www.myweb.com;
          location /web{
                 proxy_pass http://www.web.com;
          }
      }
  8. 虚拟主机示例
    1. 城市站点网站(举例说明,我们配置三个城市站点)
    2.  
    3. 配置3个Tomcat,每个tomcat一个站点,项目部署在tomcat的ROOT目录下
    4. 配置3个Nginx虚拟主机:
      1. 方式一:
        1. 在nginx.conf文件添加三个server节点,用于配置三个虚拟主机
        2. server {
                  listen       80;
                  server_name  beijing.myweb.com;
                  location / {
                      proxy_pass http://beijing.myweb.com;
                  }
          }
        3. server {
                  listen       80;
                  server_name  nanjing.myweb.com;
                  location / {
                      proxy_pass http://nanjing.myweb.com;
                  }
          }
        4. server {
                  listen       80;
                  server_name  tianjin.myweb.com;
                  location / {
                      proxy_pass http://tianjin.myweb.com;
                  }
          }
      2. 方式二:
        1. 通过include的方式引入虚拟主机配置
        2. include /usr/local/nginx/conf/vhost/vhost.conf;
        3. server {
              listen       80;
              server_name  beijing.myweb.com;
              location / {
                  proxy_pass http://beijing.myweb.com;
              }
          }

          server {
              listen       80;
              server_name  nanjing.myweb.com;
              location / {
                  proxy_pass http://nanjing.myweb.com;
              }
          }

          server {
              listen       80;
              server_name  tianjin.myweb.com;
              location / {
                  proxy_pass http://tianjin.myweb.com;
              }
          }

        4. 将虚拟目录的配置文件加入到”http {}”部分的末尾,与其他server并列

    5. 配置每个虚拟主机请求转发所对应的后端服务器

      1. upstream beijing.myweb.com { 
            server  127.0.0.1:9910;
        }

      2. upstream nanjing.myweb.com { 
            server  127.0.0.1:9920;
        }

      3. upstream tianjin.myweb.com { 
            server  127.0.0.1:9930;
        }

    6. 修改hosts文件,让Linux的ip指向到一个三个站点的域名

    7. 192.168.230.128 beijing.myweb.com
      192.168.230.128 nanjing.myweb.com
      192.168.230.128 tianjin.myweb.com

Nginx基本使用先了解这么多,后期会深入。。。。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值