【Nginx】Nginx安装&配置解析

本文详细介绍了Nginx的常用功能,包括Http代理、反向代理、负载均衡和web缓存。讲解了Nginx在不同Linux发行版的安装过程及可能遇到的异常处理,如依赖安装。此外,还涵盖了Nginx的目录结构、多进程模型、基本请求流程以及基础配置,如虚拟主机、域名解析和servername匹配规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、Nginx 概述:

1.Nginx 常用功能:

Http代理,反向代理:

负载均衡:

web缓存:

2.Nginx 版本:

3.Nginx 开源版本安装:

可能出现的异常:

4.Nginx 相关命令:

二、Nginx 目录结构:

三、Nginx 多进程模型和基本请求流程:

四、Nginx基础配置:

1.虚拟主机与域名解析:

2.配置虚拟主机(配置Nginx)

3.servername匹配规则:


一、Nginx 概述:

1.Nginx 常用功能:

Http代理,反向代理:

        Nginx作为web服务器最常用的功能之一,尤其是反向代理。

        Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

负载均衡:

        Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

         Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

web缓存:

        Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。

2.Nginx 版本:

系统环境:Linux (CentOS,Ubuntu)

Nginx 开源版本:纯原生

nginx newshttps://nginx.org/Nginx Plus 商业版本

Advanced Load Balancer, Web Server, & Reverse Proxy - NGINXNGINX accelerates content and application delivery, improves security, and facilitates availability and scalability for the busiest websites on the Internet.https://www.nginx.com/Openresty:开源版本

OpenResty® - 中文官方站https://openresty.org/cn/Tengine:阿里巴巴开源

The Tengine Web Serverhttps://tengine.taobao.org/

3.Nginx 开源版本安装:

        进入Nginx开源官方网站下载页面:

nginx: downloadhttps://nginx.org/en/download.html

        解压安装Nginx:

tar zxvf nginx-1.23.1.tar.gz

        进入Nginx目录:

cd nginx-1.23.1/

        执行configure脚本:

./configure --prefix=/usr/local/nginx

        Nginx是高度自由化的Web服务器,它的功能是由许多模块来支持。如果使用了某个模块,这个模块使用了一些类似zlib或OpenSSL等的第三方库,那么就必须先安装这些软件。Ubuntu下不像在centOS中使用yum直接在线安装,可以使用以下方法。 

可能出现的异常:

异常一:

         这一步可能出现异常情况,主要原因是因为缺少相关的环境依赖,可能提示以下错误信息:

         这里报错的的主要原因是缺少C语言的编译环境,需要安装gcc,根据不同Linux发行版安装即可:

# centos
yum install -y gcc

# ubuntu
apt install -y gcc

        如果提示权限不足,在命令前添加sudo命令。

异常二:

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

        PCRE库支持正则表达式。如果我们在配置文件nginx.conf中使用了正则表达式,那么在编译Nginx时就必须把PCRE库编译进Nginx,因为Nginx的HTTP模块需要靠它来解析正则表达式。另外,pcre-devel是使用PCRE做二次开发时所需要的开发库,包括头文件等,这也是编译Nginx所必须使用的。可以这样安装: 

        缺少pcre-devel依赖,执行安装命令:

# centos
yum install -y pcre pcre-devel

# ubuntu
apt-get install libpcre3 libpcre3-dev  

异常三:

/configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.

        zlib库用于对HTTP包的内容做gzip格式的压缩,如果我们在nginx.conf中配置了gzip on,并指定对于某些类型(content-type)的HTTP响应使用gzip来进行压缩以减少网络传输量,则在编译时就必须把zlib编译进Nginx。zlib-devel是二次开发所需要的库。可以这样安装:

sudo apt-get install zlib1g-dev

异常四:

        如果服务器不只是要支持HTTP,还需要在更安全的SSL协议上传输HTTP,那么需要拥有OpenSSL。另外,如果我们想使用MD5、SHA1等散列函数,那么也需要安装它。可以这样安装:

sudo apt-get install openssl libssl-dev 

        异常解决完成之后执行make:

make

      执行make install 安装Nginx:

make install

        安装完成之后,进入安装目录:

cd /usr/local/nginx

        进入sbin目录,执行nginx脚本文件,启动Nginx服务:

cd sbin
sudo ./nginx

        进入浏览器,地址栏输入:localhost出现以下页面,Nginx服务启动成功:

4.Nginx 相关命令:

./nginx # 启动Nginx服务

./nginx -s stop # 快速停止Nginx服务

./nginx -s quit # 优雅关闭,在关闭之前完成接受的所有连接请求

./nginx -s reload # 重新加载配置

二、Nginx 目录结构:

注意:文件名中含有_temp的文件目录是在Nginx初始化运行后产生。

  • sbin:存放这Nginx脚本程序,包含启动、停止和重启等。
  • logs:存放Nginx中运行的日志文件
    • nginx.pid:记录当前Nginx运行的进程号

  • html:存放了Nginx静态资源
  • conf:存放Nginx中所有的配置文件,重点nginx.conf,保存了基本的Nginx的配置。


三、Nginx 多进程模型和基本请求流程:

        当执行了Nginx的启动脚本(sbin目录下的nginx),这时服务器会启动一个Nginx的Master主进程,这个Master进程会去加载并校验conf目录下的nginx.conf配置文件。如果配置文件没有错误,则会开启多个Worker子进程。

        Worker进程就会根据配置文件中的配置,去指定的文件目录进行资源的读取。


四、Nginx基础配置:

        Nginx配置文件nginx.conf:

worker_processes  1; # Woker工作进程数量

# EVENT事件驱动模块:
events {
    worker_connections  1024;
}


# HTTP模块:
http {

    # include 命令在当前配置文件中引入其他配置文件
    include       mime.types;  # mime.types配置文件中预设了不同文件类型的浏览器解析方式
    
    # 指定默认的解析方式
    default_type  application/octet-stream;

    # 设置开启零拷贝
    sendfile        on;

    keepalive_timeout  65;

    # server模块:(一个Server就是一个主机)
    server {
        # 监听端口号
        listen       80;
        server_name  localhost;  # 域名,主机名

        # URI
        location / {
        
            # 相对nginx安装主目录,相对路径
            root   html;
            index  index.html index.htm;
        }

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

        0拷贝是指DMI,数据不需要从内存到CPU到内存,而是直接从内存再到内存 

1.虚拟主机与域名解析:

  • 域名:(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。
  • DNS:域名系统(英文:Domain Name System,缩写DNS)是互联网的一项服务。它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
  • IP地址:Internet Protocol Address是指互联网协议地址,又译为网际协议地址。

    IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

        由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

        在hosts文件中配置本机的域名,Linux的hosts文件在/etc目录下:

2.配置虚拟主机(配置Nginx)

worker_processes  1;

events {
    worker_connections  1024;
}

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

    sendfile        on;

    keepalive_timeout  65;

    # 配置虚拟主机:
    server {
        # 配置虚拟主机的端口号:
        listen       80;
        # 配置虚拟主机的地址(IP地址,域名)
        server_name  www.krian.com;     

	    # 配置请求资源的目录地址
        location / {
            # 指定根目录下的html中的index.html文件
            root   /html;
            index  index.html index.htm;
        }

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

配置nginx时,相同的端口号加上相同的主机名会有冲突。

        编辑完成配置文件后,需要重新加载Nginx的配置文件:

sudo ./nginx -s reload

        主要需要事先在根目录下创建html目录,在html目录中创建index.html文件。

3.servername匹配规则:

  • 当前面的servername被匹配成功之后,后面的servername将不会继续匹配。
  • servername可以配置多个主机地址和域名
  • servername匹配支持 * 通配符
  • servername支持正则表达式匹配
  • 多级域名系统
  • 短网址
  • HTTPDNS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃糖的范同学

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值