前言
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。其特点包括占有内存少、并发能力强,因此在同类型的网页服务器中表现较好。Nginx由俄罗斯的程序设计师Igor Sysoev开发,并在一个BSD-like协议下发行。它不仅可以作为一个HTTP服务器进行网站的发布处理,还可以作为反向代理进行负载均衡的实现。此外,Nginx还可以作为虚拟主机,实现在一台服务器上虚拟出多个网站。中国大陆使用Nginx的网站用户包括百度、京东、新浪、网易、腾讯、淘宝等。
Nginx相较于其他服务器软件如Apache和lighttpd,具有占有内存少、稳定性高等优势,并且依靠其强大的并发能力、丰富的模块库以及友好灵活的配置而备受青睐。在Linux操作系统下,Nginx使用epoll事件模型,因此在该操作系统下效率相当高。
总的来说,Nginx是一个功能强大的服务器软件,可用于提供HTTP服务、实现虚拟主机、反向代理和负载均衡等多种功能,是许多大型网站和应用的首选服务器软件。
Nginx具有多种功能,以下是其主要功能的详细解释:
- 静态代理:Nginx擅长处理静态文件,可以作为非常好的图片、文件服务器。将所有的静态资源放到Nginx上,可以实现应用动静分离,从而提高整个服务器系统的性能和效率。
- 负载均衡:Nginx通过反向代理可以实现服务的负载均衡,避免了服务器单节点故障,将请求按照一定的策略转发到不同的服务器上,达到负载均衡的效果。负载均衡可以优化资源使用,最大化吞吐率,最小化响应时间,同时避免过载。Nginx支持多种负载均衡策略,如轮询、权重、ip_hash、url_hash、fair等。
- 反向代理:Nginx可以作为反向代理服务器,代理客户端要访问的目标服务器。代理服务器接受请求,然后将请求转发给内部网络的服务器(集群化),并将从服务器上得到的结果返回给客户端。在反向代理方面,Nginx提供了灵活的功能,可以根据不同的正则采用不同的转发策略。
- 配置HTTPS:Nginx支持SSL和TLS SNI,可以配置HTTPS,从而实现加密通信,提高数据传输的安全性。
- 动静分离:Nginx可以将动态请求和静态请求分离开,合适的服务器处理相应的请求,这样可以使整个服务器系统的性能、效率更高。一般来说,动态请求由相应的后端服务器处理。
- IMAP/POP3代理服务:Nginx还提供IMAP/POP3代理服务功能,可以使用外部HTTP认证服务器重定向用户到IMAP/POP3后端,或者使用外部HTTP认证服务器认证用户后连接重定向到内部的SMTP后端。
1、安装依赖库
首先,你需要安装 Nginx 编译所需的依赖库。这些库可能因你的 Linux 发行版而异。以下是一些常见的依赖库:
yum install gcc
yum install pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
安装过程中
2、下载、编译、配置nginx
注意:以下操作目录为 /usr/local
2.1、下载
方法一:下载地址:
nginx: downloadhttp://nginx.org/en/download.html,下载后传到服务器中;
方法二:通过wget直接下载
wget http://nginx.org/download/nginx-1.20.2.tar.gz
2.2、解压文件
tar -zxvf nginx-1.20.2.tar.gz
2.3、源码编译
进入解压目录:
cd nginx-1.20.2
基本编译:
./configure
以上源码编译的规则如下所示
这些./configure命令选项是用于配置和编译Nginx源代码的参数。Nginx是一个高性能的HTTP和反向代理服务器,邮件代理服务器,以及通用的TCP/UDP代理服务器。下面是每个选项的详细解释:
--prefix=/usr/share/nginx: 设置Nginx安装的基本目录前缀。
--sbin-path=/usr/sbin/nginx: 设置nginx可执行文件的路径。
--modules-path=/usr/lib/nginx/modules: 设置动态加载模块的路径。
--conf-path=/etc/nginx/nginx.conf: 设置主配置文件的路径。
--error-log-path=/var/log/nginx/error.log: 设置错误日志的路径。
--http-log-path=/var/log/nginx/access.log: 设置访问日志的路径。
以下是与模块相关的选项:
--with-pcre: 使用PCRE库来支持正则表达式的处理。
HTTP模块:
--with-http_ssl_module: 启用SSL支持。
--with-http_realip_module: 启用获取真实客户端IP的模块。
--with-http_addition_module: 启用在响应中添加文本或变量的模块。
--with-http_sub_module: 启用在响应中替换文本的模块。
--with-http_dav_module: 启用WebDAV支持。
--with-http_flv_module: 启用对FLV流媒体的支持。
--with-http_mp4_module: 启用对MP4流媒体的支持。
--with-http_gunzip_module: 启用解压响应的模块。
--with-http_gzip_static_module: 启用对预压缩文件的支持。
--with-http_random_index_module: 启用从目录中随机选择索引文件。
--with-http_secure_link_module: 启用生成和检查安全链接的模块。
--with-http_stub_status_module: 启用获取Nginx状态信息的模块。
--with-http_auth_request_module: 启用基于子请求实现用户认证的模块。
其他模块:
--with-threads: 启用线程池支持。
--with-stream: 启用TCP/UDP代理模块。
--with-stream_ssl_module: 启用在stream模块中使用SSL。
--with-stream_realip_module: 在stream模块中启用获取真实客户端IP的功能。
--with-stream_geoip_module: 在stream模块中启用GeoIP支持。
--with-http_slice_module: 启用响应切片支持。
邮件模块:
--with-mail: 启用邮件代理模块。
--with-mail_ssl_module: 在邮件模块中启用SSL支持。
性能选项:
--with-file-aio: 启用异步文件I/O支持。
--with-http_v2_module: 启用HTTP/2支持。
2.4、源码安装
make && make install
2.5、配置文件软连接
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
3、启动/停止nginx
操作目录:/usr/local/nginx/sbin
cd /usr/local/nginx/sbin
启动
./nginx
关闭
./nginx -s stop
注意:如果启动不了,出现以下情况
则需要关闭防火墙
4、测试访问
在你的主机电脑上输入你的虚拟机IP地址就可以直接进入此页面,应为我们配置的nginx.conf中使用的端口是默认端口80,所以不需要输入端口号就可以直接进入
5、配置自启,编写systemd单元文件管理nginx服务
为什么编写systemd单元文件管理nginx服务
系统初始化与启动:
systemd是Linux系统(特别是较新的发行版)的初始化系统和服务管理器。它负责在系统启动时启动服务,并在系统关闭时停止服务。通过为Nginx编写systemd单元文件,可以确保Nginx在系统启动时自动启动,并在系统关闭时正确停止。
依赖管理:
systemd允许定义服务之间的依赖关系。例如,如果Nginx依赖于某个数据库服务,你可以在Nginx的systemd单元文件中定义这种依赖,确保数据库服务在Nginx之前启动。
日志记录:
systemd提供了强大的日志记录功能,可以记录服务的启动、停止和任何错误。通过systemd管理Nginx,你可以轻松访问这些日志,以便快速诊断问题。
资源限制:
systemd允许你为服务设置资源限制,如CPU、内存和文件描述符的使用量。这对于管理大型Nginx部署或限制潜在的资源滥用非常有用。
重载配置:
systemd允许在不重启服务的情况下重载配置。对于Nginx这样的服务来说,这是一个非常有用的功能,因为你可以在不中断现有连接的情况下应用新的配置更改。
监控和通知:
systemd可以与多种监控工具集成,以便在系统或服务出现问题时发送通知。这使得管理员能够迅速响应并解决潜在问题。
标准化管理:
使用systemd单元文件来管理Nginx可以确保你的服务管理策略在整个系统中保持一致。这有助于减少配置错误,并使系统更容易维护。
进入系统目录:
cd /usr/lib/systemd/system/
编写nginx.service:
vim nginx.service
内容如下:
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
注意:ExecStart、ExecReload、ExecStop需要指定到nginx的实际安装目录
例:
执行命令:
systemctl daemon-reload
# 开启自启
systemctl enable nginx.service
# 启动、重启、停止
systemctl start|reload|stop nginx
————————————————
本文章参考
原文链接:https://blog.csdn.net/zhuocailing3390/article/details/122250271