nginx服务基础
Nginx服务基础涵盖了多个方面,以下是基于参考文章内容的清晰归纳:
一、Nginx的特点
- 高性能、轻量级:Nginx是一款高性能、轻量级的Web服务软件,对HTTP并发连接的处理能力高,单台物理服务器可支持高达30,000~50,000个并发请求。
- 稳定性高:Nginx具有高度的稳定性,能够经受高负载的考验。
- 系统资源消耗低:Nginx在内存消耗和连接方面表现优秀,比传统服务器(如Apache)占用更少的内存及资源。
- 基于事件驱动:Nginx是一个基于事件的Web服务器,其性能和可伸缩性不依赖于硬件。
二、Nginx与Apache的差异
- 工作原理:Nginx是一个基于事件的服务器,而Apache是一个基于流程的服务器。
- 内存消耗和连接:Nginx在内存消耗和连接方面表现优于Apache。
- 依赖硬件:Nginx的性能和可伸缩性不依赖于硬件,而Apache则依赖于CPU和内存等硬件。
- 热部署:Nginx支持热部署,而Apache不支持。
- 文件处理:Nginx对于静态文件处理具有更高效率,同时在反向代理场景中具有明显优势,并支持负载均衡。
三、Nginx的应用场景
- Web服务器:Nginx可以作为高性能的Web服务器,处理大量的并发连接。
- 反向代理:Nginx可以作为反向代理服务器,隐藏真实服务器的IP地址,提高安全性。
- 负载均衡:Nginx支持负载均衡,可以将请求分发到多个服务器上,提高系统的整体处理能力。
- 动静分离:为了加快网站的解析速度,Nginx可以实现动静分离,将动态页面和静态页面由不同的服务器来解析。
四、Nginx的配置和优化
- 配置文件:Nginx的配置文件位于
/usr/local/nginx/conf/nginx.conf
,由全局块、events块和http块组成。 - 常用命令:包括查看Nginx版本号、启动、关闭、重启、优雅停止、重新加载配置文件和测试配置文件是否正确等。
- 服务进程优化:可以通过调整Nginx的I/O配置(如使用epoll模型提高性能)、gzip压缩输出、日志格式设定等方式来优化Nginx服务进程。
五、Nginx的编译和安装
Nginx的编译和安装过程包括关闭防火墙、安装依赖包、创建运行用户与组、编译安装Nginx、检查、启动、重启、停止nginx服务等步骤。此外,新版本升级时需要注意备份原配置文件和数据,并按照升级步骤进行操作。
总结来说,Nginx服务基础涵盖了其特点、与Apache的差异、应用场景、配置和优化以及编译和安装等方面。在实际应用中,需要根据具体需求和环境来配置和优化Nginx服务,以充分发挥其高性能、稳定性和可扩展性的优势。
安装及运行控制
一、Nginx的安装
1. 准备编译环境
在安装Nginx之前,需要确保系统上已经安装了必要的编译工具和依赖项。
- GCC编译器:Nginx是使用C语言编写的程序,因此需要安装GCC编译器。在Linux系统上,可以使用
yum install -y gcc
或sudo apt-get install build-essential
命令进行安装。 - PCRE库:Nginx在编译过程中需要使用到PCRE库(Perl Compatible Regular Expressions,兼容正则表达式库)。可以使用
yum install -y pcre pcre-devel
或相应的包管理器命令进行安装。 - zlib库:Nginx在编译过程中需要使用zlib库来提供压缩功能。可以使用
yum install -y zlib zlib-devel
或相应的包管理器命令进行安装。 - OpenSSL库:如果Nginx需要支持HTTPS,则需要安装OpenSSL库。可以使用
yum install -y openssl openssl-devel
或相应的包管理器命令进行安装。
2. 下载Nginx源代码
从Nginx的官方网站下载最新的稳定版本源代码。在下载页面上,根据操作系统选择适合的版本。
3. 解压缩Nginx源代码
将下载的Nginx源代码解压缩到指定的目录。例如,使用tar -zxvf nginx-x.x.x.tar.gz
命令解压缩。
4. 配置Nginx
进入解压缩后的Nginx源代码目录,执行./configure
命令进行配置。如果需要指定安装目录,可以使用--prefix
选项,如./configure --prefix=/path/to/installation/directory
。
5. 编译和安装Nginx
执行make
命令进行编译,然后执行sudo make install
命令进行安装。这将会花费一些时间来完成编译和安装过程。
二、Nginx的运行控制
1. 启动Nginx
在Linux系统上,可以使用sudo systemctl start nginx
命令启动Nginx服务。如果是使用init.d脚本管理的系统,可以使用/etc/init.d/nginx start
命令启动。
2. 停止Nginx
使用sudo systemctl stop nginx
命令停止Nginx服务。如果是使用init.d脚本管理的系统,可以使用/etc/init.d/nginx stop
命令停止。
3. 重启Nginx
使用sudo systemctl restart nginx
命令重启Nginx服务。这将会先停止Nginx服务,然后再次启动。
4. 重新加载配置文件
如果修改了Nginx的配置文件,可以使用sudo nginx -s reload
命令重新加载配置文件,使修改生效。这将会平滑地重启Nginx服务,而不会中断正在处理的请求。
5. 检查配置文件语法
在修改Nginx配置文件后,可以使用sudo nginx -t
命令检查配置文件的语法是否正确。如果配置文件语法正确,则会显示"syntax is ok"和"test is successful"的提示信息。
访问控制
Nginx的访问控制是一种安全机制,用于限制系统或网络资源的访问权限,确保只有经过授权的用户或系统可以访问这些资源。以下是关于Nginx访问控制的详细解释:
1. 访问控制模块
- http_access_module:用于基于IP的访问控制。
2. 基于IP的访问控制
-
配置语法:
allow address|CIDR|unix:|all;
:允许特定IP地址或网段访问。deny address|CIDR|unix:|all;
:拒绝特定IP地址或网段访问。
-
Context:http, server, location, limit_except
-
示例:
3. 基于用户的信任登录(Basic Auth)
- 访问控制模块:http_auth_basic_module
- 配置语法:
auth_basic string|off;
:开启Basic Auth,并指定一个提示字符串。auth_basic_user_file file;
:指定存储用户名和密码的文件。
- 使用htpasswd生成密码文件:
- 安装httpd-tools(包含htpasswd命令)。
- 使用
htpasswd -c /path/to/.htpasswd username
创建密码文件,并添加用户。 - 后续添加用户可以使用
htpasswd /path/to/.htpasswd username
(不带-c选项)。
4. 其他访问控制方法
- ngx_http_limit_conn_module:限制连接数。
- ngx_http_limit_req_module:限制请求频率。
- 连接限制白名单:可以配置白名单,允许特定IP或网段不受连接或请求频率限制。
5. 注意事项
- 审计和监控:除了基本的访问控制外,记录和分析访问日志有助于检测潜在的安全威胁或违规行为。
- 单点登录(SSO):虽然Nginx本身不直接支持SSO,但可以与其他支持SSO的系统或应用结合使用。
6. 总结
Nginx的访问控制提供了灵活多样的配置选项,可以根据实际需求进行精细的权限控制。无论是基于IP的访问控制,还是基于用户的信任登录,都能有效保护系统资源的安全。同时,Nginx还支持连接限制和请求频率限制等高级功能,进一步增强了系统的安全性。
虚拟主机
一、概述
Nginx虚拟主机允许你在一台服务器上运行多个网站,每个网站都拥有独立的域名和完整的Web服务(如网站、FTP、邮件等)。这些网站共享物理服务器的资源,如CPU、内存、硬盘存储和网络带宽,但每个网站在Nginx中运行都如同拥有一台独立的服务器。这种设置方式显著降低了网站托管的成本,尤其适合小型和中型网站。
二、配置虚拟主机的优势
- 节约成本:多个网站共享物理服务器的资源,无需为每个网站单独配置服务器或Nginx进程。
- 高灵活性:每个虚拟主机都可以独立配置,包括域名、文档根目录、访问权限等。
- 可扩展性:当某个网站的访问量增加时,可以通过增加物理服务器的资源或添加更多服务器来扩展处理能力。
三、配置虚拟主机的步骤(简化版)
-
创建配置文件:在Nginx的配置文件目录下(如
/usr/local/nginx/conf
),为每个虚拟主机创建一个配置文件(如example.com.conf
)。- 设置工作进程数(建议与CPU核数相同或两倍)。
- 设置最大连接数。
- 配置HTTP协议相关信息。
在
http
块中,为每个虚拟主机定义一个server
块,并指定以下内容:listen
:监听虚拟主机的IP地址和端口(如listen 192.168.1.100:80
)。server_name
:虚拟主机的域名(如server_name example.com
)。access_log
:虚拟主机服务器的日志文件路径。location
:定义URL到文件系统的映射关系。
-
加载配置文件:在Nginx的主配置文件(如
nginx.conf
)中,使用include
指令加载所有虚拟主机的配置文件。 -
测试配置:运行
nginx -t
命令测试配置是否正确。 -
重启Nginx:如果配置正确,运行
nginx -s reload
命令重新加载配置并重启Nginx服务。
四、注意事项
- 安全性:确保为每个虚拟主机配置适当的安全设置,如访问控制、密码保护等。
- 性能优化:根据网站的需求和访问量,对Nginx进行性能优化,如调整工作进程数、最大连接数等参数。
- 备份和恢复:定期备份Nginx的配置文件和日志文件,以便在出现问题时能够快速恢复。
通过配置Nginx虚拟主机,你可以在一台服务器上轻松运行多个网站,并享受高灵活性、可扩展性和节约成本的优势。
LNMP架构部署及应用
一、LNMP架构概述
LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写,即Linux(L)+ Nginx(N)+ MySQL(M)+ PHP(P)。这种架构结合了Linux系统的稳定性、Nginx的高性能、MySQL的数据库处理能力和PHP的脚本处理能力,形成了一套成熟、稳定、安全的Web服务器架构。
二、LNMP架构部署
- 安装Linux操作系统:选择适合的Linux发行版,如CentOS、Ubuntu等,并进行安装。
- 安装Nginx:
- 安装依赖环境。
- 创建运行用户。
- 获取Nginx包并将其解包。
- 配置安装路径和相关模块。
- 编译并安装。
- 优化路径。
- 添加Nginx系统服务。
- 赋予相关权限。
- 启动Nginx服务。
- 安装MySQL:
- 安装Mysql环境依赖包。
- 创建运行用户。
- 获取MySQL包并将其解压。
- 设置环境变量。
- 初始化数据库。
- 添加MySQL服务系统。
- 设置开机自启。
- 设置MySQL密码。
- 授权远程登录。
- 安装PHP:
- 安装PHP依赖环境。
- 获取PHP包并将其解包。
- 配置安装路径和相关模块(如GD库、curl库等)。
- 编译并安装。
- 添加PHP到系统环境变量。
三、LNMP架构优势及应用
- 优势:
- 高性能和高并发:Nginx采用事件驱动的非阻塞I/O模型,能够高效地处理大量并发连接和请求。
- 安全性高:Nginx支持HTTP认证和SSL/TLS加密,提供数据和服务的安全性。
- 部署灵活:LNMP架构中的各个组件都是开源的,可以根据需要进行定制和扩展。
- 开发快速:PHP是一种在服务器端执行的脚本语言,非常适合快速开发。
- 资源占用少:Nginx比Apache更为轻量级,占用系统资源更少,可以支持更多的并发连接。
- 应用案例:
- 微信公众号后台管理系统:Nginx负责反向代理和负载均衡,MySQL用于存储用户的数据信息,PHP用于处理业务逻辑和与前端的交互。
- 购物网站:Nginx负责静态资源的处理和请求分发,MySQL用于存储商品、用户、订单等数据,PHP处理用户的购买流程、商品展示等业务逻辑。
总结来说,LNMP架构以其高性能、安全性、灵活性、易用性和高可靠性,成为目前互联网公司主流的一种Web架构,特别适用于处理高并发、多并发连接、大流量网站的情景。在部署LNMP架构时,需要注意各个组件的版本兼容性以及安全性设置,确保系统的稳定运行和数据安全。