首页服务器教程Nginx源代码安装与基础配置指南

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

2024-06-13 66

作为一款轻量级、高性能的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、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

相关文章