Nginx 学习笔记

Nginx 概述、安装

什么是 Nginx ?

\qquad Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是 占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx 的应用场景

  1. Http 服务器。Nginx 是一个 HTTP 服务器,可以独立提供 HTTP 服务,也可以做静态网页服务器

  2. 虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟主机

  3. 反向代理,负载均衡。当网站的访问量达到一定程度之后,单台服务器不能用户的请求时,需要用多台服务器集群,配合 Nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机,而某台服务器闲置的情况。

Nginx 在 Linux 下的安装

环境准备

  1. gcc 环境
yum install gcc-c++
  1. 第三方的开发包 PCRE

\qquad PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。Nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre库。

yum install -y pcre pcre-devel
  1. zlib 库

\qquad zlib 库提供了很多种压缩和解压缩的方式,Nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。

yum install -y zlib zlib-devel
  1. OpenSSL

\qquad OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。Nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux 安装 openssl 库。

yum install -y openssl openssl-devel

下载、编译、安装 Nginx

  1. 下载 Nginx

\qquad 去官网中下载 Nginx 的压缩包:http://nginx.org/en/download.html

在这里插入图片描述

  1. 上传到服务器上,并解压缩
tar -xzvf nginx-1.10.3.tar.gz

在这里插入图片描述

  1. 使用 configure 命令创建 makefile 文件

在这里插入图片描述

./configure \
--prefix=[安装目录: /opt/nginx/] \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

在这里插入图片描述

  1. 使用 make 命令编译、安装
make # 编译
make install # 安装

在这里插入图片描述

  1. Nginx 的启动与访问

注意:之前在执行 configure 命令时,指定的临时文件 /var/temp/nginx/client 还没有创建,需要先创建,否则会报错

mkdir /var/temp/nginx/client -p
  • 启动、关闭 Nginx 的命令:
cd /opt/nginx/sbin # 进入 Nginx 目录下的 sbin 目录

./nginx # 启动 Nginx
./nginx -s quit # 正常退出 Nginx(退出前保存配置)
./nginx -s stop # 强制退出 Nginx
./nginx -s reload # 刷新配置文件

在这里插入图片描述

Nginx 功能一:部署静态资源

  • 先看一下 Nginx 的配置文件 conf/nginx.conf

在这里插入图片描述

  • 所以要想引用静态资源,只需要将 html 文件夹下的 index.html 换成自己的就行了
  • 比如:换上自己的 404 页面

在这里插入图片描述
在这里插入图片描述

Nginx 功能二:虚拟主机

\qquad 在 nginx.conf 文件中,一个 server {} 就代表一个服务端:

...
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile    on;

    keepalive_timeout  65;

    # 服务端,可以多个配置(不同的端口、server_name)
    server {
        listen       80; #  端口号,默认 80
        server_name  localhost; # 域名或者 ip

        location / { # 访问路径
            root   html; # 默认访问资源的目录
            index  index.html index.htm; # 默认访问资源名称
        }

        # 错误页面
        error_page  404 /404.html;
        error_page   500 502 503 504  /50x.html;
        
        location = /50x.html { # 访问路径
            root   html;
        }
    }
    ...
}
...

端口绑定

  • 在 nginx.conf 中配置多个 server,每个 server 设置不同的端口,server_name 仍然配置成 localhost,再为每个 server 配置不同的静态资源内容,就可以实现访问不同的端口号,得到不同的资源
    # http://公网ip:80/ ---> html/index.html
    server {
        listen       80; #  端口号
        server_name  localhost; # 域名或者 ip

        location / { # 访问路径
            root   html; # 默认访问资源的目录
            index  index.html index.htm; # 默认访问资源名称
        }

        # 错误页面
        error_page  404 /404.html;
        error_page   500 502 503 504  /50x.html;
        
        location = /50x.html { # 访问路径
            root   html;
        }
    }
    
    # http://公网ip:8088/ ---> bookstore/index.html
    server {
        listen       8088; #  端口号,默认 80
        server_name  localhost; # 域名或者 ip

        location / { # 访问路径
            root   bookstore; # 默认访问资源的目录
            index  index.html index.htm; # 默认访问资源名称
        }

        # 错误页面
        error_page  404 /404.html;
        error_page   500 502 503 504  /50x.html;
        
        location = /50x.html { # 访问路径
            root   bookstore;
        }
    }

域名绑定

\qquad Windows 系统通过域名来访问网站时,首先从本地的 hosts 文件中查看有没有域名对应的 ip 地址,如果没有就会去 DNS 服务器找域名与 ip 地址的对应关系。

  1. 所以,先在 hosts(C:\Windows\System32\drivers\etc\hosts) 中添加一个域名与 ip 的映射

在这里插入图片描述

  1. 然后,在 nginx.conf 中配置 server:
    # ========== use cute-alien.cc visit the web
    # ========== shit! A problem happened, because it need to be signed.
    # ========== We can only use the domain that is not existed.
    server {
        listen       80;
        server_name  cute-alien.cc;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page  404              /404.html;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    # ========== use www.cute-alien.cc visit the web
    # ========== shit! A problem happened, because it need to be signed.
    # ========== We can only use the domain that is not existed.
    server {
        listen       80;
        server_name  www.cute-alien.cc;

        location / {
            root   html;
            index  404.html;
        }

        error_page  404              /404.html;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

  1. 结果(临时效果):

注意:设置的域名需要备案,不然会被截断(如果服务器是中国内地的)

在这里插入图片描述
在这里插入图片描述

Nginx 功能三:反向代理与负载均衡

反向代理

介绍

\qquad 反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接户端,此时代理服务器对就表现为一个反向代理服务器。

  • 正向代理:

在这里插入图片描述

  • 反向代理:

在这里插入图片描述

配置反向代理:

    # 第一步:配置上升流[狗头]
    upstream tomcat-blog {
        # server [ip]:[port];
        server 192.168.2.100:80;
        server 192.168.2.101:80;
        server 192.168.2.102:8080;
        server 192.168.2.102:8081;
    }
    
    server {
        listen       80;
        
        # server_name  [访问的域名]/ip;
        server_name cute-alien.cc;

        location / {
            # root   html; # 默认访问资源的目录
            proxy_pass http://tomcat-blog;
            index  index.html index.htm;
        }
    }

负载均衡

\qquad 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法,可以扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
\qquad 负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如 Web 服务器、FTP 服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

  • 在 Nginx 中可以配置 weight(权重),默认为1
    # 第一步:配置上升流[狗头]
    upstream tomcat-blog {
        # server [ip]:[port];
        server 192.168.2.100:80 weight=2;
        server 192.168.2.101:80;
        server 192.168.2.102:8080;
        server 192.168.2.102:8081;
    }

Nginx 实现动静分离

概述

\qquad Nginx 动静分离是指将动态请求与静态请求分离开,即 使用 Nginx 处理静态页面,Tomcat 处理动态页面。

\qquad 动静分离有两种实现方式:
\qquad (1). 纯粹地把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案
\qquad (2). 把动态与静态文件混合在一起发布,通过 Nginx 来分开
在这里插入图片描述

\qquad 通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使存过期时间,减少与服务器之前的请求和流量。

\qquad 具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。

\qquad 此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),比如这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304;如果有修改,则直接从服务器重新下载,返回状态码 200。

实例

  1. 放置静态资源

在这里插入图片描述

  1. 修改 Nginx 的配置文件 conf/nginx.conf

在这里插入图片描述

  1. linux 中重新加载 Nginx 的配置文件 —— ./nginx -s reload

  2. 在浏览器中测试

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值