Nginx源代码安装与基础配置指南

作为一款轻量级、高性能的Web服务器软件,Nginx不仅能够作为反向代理服务器、邮件代理服务器使用,还能胜任负载均衡器和HTTP缓存等角色,广泛应用于各种规模的网络系统当中。本文将详细介绍Nginx的源代码安装过程。

一、Nginx简介

在处理高并发、低资源消耗的网络流量时,选择合适的服务器软件至关重要。俄罗斯的Nginx(发音为"engine x")便是一款备受推崇的Web服务器软件,源自于2004年由伊戈尔(Igor)创建并开源。最初作为代理服务器推出,2015年成立了Nginx公司,其后在2019年被F5 Networks公司以6.7亿美元收购。

二、Nginx和负载均衡

在反向代理和负载均衡领域,Nginx与LVS、HAProxy等工具存在竞争与补充的关系。其中,LVS以其强大的负载能力、简洁的配置及稳定的表现著称;而Nginx则在HTTP分流策略、正则规则处理等方面显示出更高的灵活性。尽管Nginx仅支持HTTP、HTTPS、Email协议,其活跃的社区和丰富的第三方模块确保了广泛的应用场景。

1、LVS(Linux Virtual Server)

(1)优点:

  • 强大的负载均衡能力,工作在网络的第四层,仅用于分发;
  • 配置简单,易于使用,稳定性高。支持完整的双机热备方案;
  • 广泛适用,几乎支持所有应用;
  • 提供多种调度算法,如轮询、加权轮询、最小连接数等。

(2)缺点:

  • 不支持正则表达式处理,无法进行动静分离;
  • 对于庞大的网站应用,LVS/DR+Keepalived的实施较为复杂;

2、Nginx

(1)优点:

  • 工作在网络的第七层,针对HTTP流量做分流策略,支持正则规则,灵活性高;
  • 对网络稳定性要求较低,安装配置简单;
  • 高负载、高并发下资源消耗低;
  • 不仅可作为代理服务器,还可用作Web服务器,且支持缓存静态网页和图片;
  • 活跃的社区和丰富的第三方模块。

(2)缺点:

  • 适应范围较窄,仅支持HTTP、HTTPS、Email协议;
  • 对后端服务器的健康检查仅支持通过端口检测,不支持URL检测。

3、HAProxy

(1)优点:

  • 支持虚拟主机,工作在第四、第七层,支持多网段;
  • 补充了Nginx的一些缺点,如支持Session保持、Cookie引导等;
  • 可以通过获取指定的URL检测后端服务器状态;
  • 负载均衡速度较快,在并发处理上优于Nginx;
  • 支持TCP协议的负载均衡转发,可用于对MySQL读的负载均衡。

(2)缺点:

  • 不支持POP/SMTP协议,SPDY协议以及HTTP缓存功能;
  • 配置重载需要重新启动进程;
  • 多进程模式的支持不足。

三、Nginx基础特性

Nginx 是一个高性能的开源 Web 服务器,具有许多基础特性和功能。其模块化设计使得它具有良好的扩展性,可以根据需要灵活添加功能。

1、Nginx基础特性:

  • 模块化设计和高扩展性: Nginx 采用模块化的架构,允许用户通过添加新的模块来扩展其功能,同时保持高性能和稳定性;
  • 高可靠性: Nginx 被广泛用于高流量的网站和应用,因为它具有稳定可靠的性能,能够处理大量并发连接而不会出现系统崩溃或性能下降;
  • 支持热部署: Nginx 允许在不停机的情况下更新配置文件、升级版本和更换日志文件,这使得系统的维护更加灵活和便捷;
  • 低内存消耗: 即使在有大量长连接的情况下,Nginx 的内存消耗也非常低。例如,在处理 10000 个 keep-alive 的非活动连接时,仅需 2.5MB 的内存;
  • 事件驱动和异步非阻塞: Nginx 使用事件驱动的架构来处理请求,通过异步非阻塞的方式处理 I/O 操作,提高了服务器的性能和并发能力;
  • 支持 sendfile 和内存映射: Nginx 支持 sendfile 技术,可以在文件传输过程中将数据直接从磁盘发送到网络,提高了文件传输的效率。同时,它还支持内存映射,可以将文件映射到内存中进行读写操作,加速数据的访问。

2、Nginx基本功能

  • 静态资源的 Web 服务器: Nginx 可以作为静态资源的 Web 服务器,快速、高效地提供静态文件的访问服务;
  • HTTP 协议的反向代理: Nginx 可以作为反向代理服务器,将客户端的请求转发到多个后端服务器,并将响应返回给客户端,实现负载均衡和高可用性;
  • 支持 FastCGI 和 uWSGI: Nginx 可以与 FastCGI 或 uWSGI 等协议的应用服务器进行集成,实现动态内容的处理和网站应用的部署;
  • 邮件反向代理: Nginx 可以作为 POP3/IMAP4 邮件服务器的反向代理,实现邮件服务的负载均衡和高可用性;
  • 模块化架构: Nginx 提供了丰富的标准模块,如 ngx_http_、ngx_mail_、ngx_upstream_* 等,同时还支持第三方模块的扩展,如压缩、SSL 加密等功能;

3、Master/Worker结构

Nginx 的 Master/Worker 结构进一步提升了其性能和稳定性:

  • Master 进程: 主要负责读取 Nginx 的配置文件,验证配置的有效性和正确性,建立、绑定和关闭网络连接,接受外部指令并执行,如重启、开启、关闭服务等操作。在升级版本或配置文件时,Master 进程可以实现平滑的不中断服务,保证了系统的稳定性;
  • Worker 进程: 主要负责处理客户端的请求,根据配置的模块进行请求处理,进行 I/O 调用,与后端服务器通信,进行数据缓存和请求结果的发送。Worker 进程与 Master 进程相互通信,接受其指令并执行相应的操作,保证了系统的协调运行。

四、Nginx安装

Nginx基于C语言开发,因此需要预先安装C语言编译环境。在Linux系统下,通过简单的命令即可完成安装:

1、安装依赖包:

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

2、下载并解压Nginx:

wget https://nginx.org/download/nginx-1.16.1.tar.gz
tar -zxvf nginx-1.16.1.tar.gz

3、配置及编译安装Nginx:

cd nginx-1.16.1
./configure --prefix=/usr/local/nginx
make & make install

安装完成后,可查看Nginx目录结构,其中"conf/nginx.conf"是核心配置文件。

Nginx源代码安装与基础配置指南

五、Nginx常用命令与环境变量配置

1、查看版本、检查配置文件合法性、启动、停止、重新加载等操作可通过以下命令执行:

./nginx -v
./nginx -t
./nginx
./nginx -s stop
./nginx -s reload

2、为便于操作,建议将Nginx的sbin目录添加到PATH环境变量中,实现在任意位置执行Nginx命令。

通过vim编辑器,打开/etc/profile文件, 在PATH环境变量中增加nginx的sbin目录,如下:

Nginx源代码安装与基础配置指南

五、Nginx应用

1、配置文件结构

nginx的配置文件(conf/nginx.conf)整体上分为三部分:

  • 全局块、配置和nginx运行相关的全局配置;
  • events块:配置和网络连接相关的配置;
  • http块 :配置代理、缓存、日志记录、虚拟主机等配置。

Nginx源代码安装与基础配置指南

在http块中可以包含多个server块,每个server块可以配置多个location块。

2、部署静态资源

Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在,并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。

将静态资源部署到Nginx非常简单,只需要将文件复制到Nginx安装目录下的html目录中即可。

server {
listen 80; #监听端口 
server_name localhost; #服务器名称
location / { #匹配客户端请求url
root html; #指定静态资源根目录
index index.html; #指定默认首页
}
}

将静态资源上传到 /usr/local/nginx/html 目录。

Nginx源代码安装与基础配置指南

启动nginx。

Nginx源代码安装与基础配置指南

访问。

Nginx源代码安装与基础配置指南

我们也可以通过修改指定默认首页的路径的方式来修改访问路径。

配置文件修改后,需要重新加载一下,才可以生效 :nginx -s reload。

3、反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。用户不需要知道目标服务器的地址,也无须在用户端作任何设定,对于用户来说,访问反向代理服务器是完全无感知的。 在nginx中,我们可以在nginx.conf中配置反向代理:

Nginx源代码安装与基础配置指南

进入nginx的安装目录,并编辑配置文件nginx.conf:

cd /usr/local/nginx/conf/
vim nginx.conf

在http块中,再添加一个server块虚拟主机的配置,监听82端口,并配置反向代理proxy_pass:

server {
listen 82;
server_name localhost;
location / {
proxy_pass http://192.168.200.201:8080; #反向代理配置,将请求转发到指定服务
}
}

上述配置的含义为: 当我们访问nginx的82端口时,根据反向代理配置,会将请求转发到http://192.168.200.201:8080 对应的服务上。

检查配置文件,并重新加载:

nginx -t
nginx -s reload

到此安装和配置结束。

广告合作
QQ群号:707632017
标签:

温馨提示:

1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。

2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

热门教程

  • Z-Blog教程
    Z-Blog教程
    ZBlog教程分享ZBlog安装教程、ZBlog建站教程和ZBlog使用教程等相关教程,包括如何创建...
  • WordPress教程
    WordPress教程
    WordPress教程提供了关于WordPress的基础知识和技巧,包括安装、设置、发布内容、选择主...
  • 宝塔面板教程
    宝塔面板教程
    宝塔面板教程是一个致力于向用户传授宝塔面板的使用技巧和知识的学习资源,旨在帮助用户快速上手和充分利用...
  • Shopify教程
    Shopify教程
    Shopify教程提供了关于Shopify平台的基本知识和操作指南,包括商店设置、商品管理、订单处理...
  • PHP教程
    PHP教程
    PHP教程提供了关于PHP语法、变量、函数、流程控制等概念的详细指导,同时介绍了常见的Web开发技术...

3个月免费VPS

亚马逊云科技

阿里云