当前位置: 首页 > news >正文

nginx作业

一、Nginx简介

Nginx 是一个高性能的、开源的 HTTP 和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。它由俄罗斯程序员伊戈尔·赛索耶夫开发,并于2004年首次公开发布。
Nginx 的突出特点是其高并发处理能力、低内存消耗、高稳定性和丰富的功能集。如今,它已成为全球最受欢迎的 Web 服务器之一,被许多高流量网站如百度、京东、新浪、网易、腾讯等所使用。

二、 Nginx 的核心特点与优势

1.高并发、高性能:
事件驱动架构:Nginx 采用异步非阻塞的事件驱动模型。与 Apache 的多线程或多进程模型(一个连接对应一个线程)不同,Nginx 使用一个或几个工作进程来处理成千上万的网络连接。这使得它在资源消耗(特别是 CPU 和内存)方面极具效率,尤其在处理大量并发连接时表现卓越。
2.低内存消耗:
由于其高效的设计,Nginx 在处理静态内容时,每个连接的内存占用非常少。
3.高可靠性:
Nginx 以其稳定性著称,可以长时间不间断运行,许多网站都报告了其数百天甚至更长的无故障运行时间。
4.模块化设计:
Nginx 具有高度模块化的结构。除了核心功能外,大部分功能都以模块的形式存在。用户可以根据需要自行编译和添加模块,这使得 Nginx 非常灵活和可扩展。
5.正向代理:
代理客户端向服务器发起请求,典型场景如客户端需间接访问目标服务器(如科学上网)。nginx 接收客户端请求后,转发至目标服务器并返回响应。
6.反向代理:
代理服务器端向客户端提供服务,客户端不知晓实际处理请求的后端服务器。nginx 可实现请求分发、隐藏后端信息、SSL 卸载、缓存等功能,是服务架构中 “流量入口” 的常见选择。
7.作为负载均衡器:
作为反向代理的自然延伸,Nginx 可以将流量分发到后端的多台服务器上,以避免单一服务器压力过大,从而提高系统的整体处理能力和可用性。

三、 Nginx 的主要应用场景

1.静态内容服务:
Nginx 在处理静态文件(如 HTML、CSS、JavaScript、图片、视频)方面效率极高,通常被用作静态内容的服务器。
2.反向代理和负载均衡:
反向代理:隐藏后端服务器的真实信息,提高安全性。所有客户端请求都发往 Nginx,由 Nginx 与后端应用服务器(如 Tomcat, Node.js, Python, PHP-FPM 等)通信。
负载均衡:通过 upstream 模块,可以使用多种策略(如轮询、权重、IP哈希等)将请求分发到后端服务器集群。
3.API 网关:
在现代微服务架构中,Nginx 常被用作 API 网关,统一处理认证、限流、日志、SSL 终端等通用任务。
4.SSL 终端:
Nginx 可以处理 HTTPS 协议的加解密工作,减轻后端服务器的计算负担。
5.虚拟主机:
支持基于域名或 IP 的虚拟主机,可以在单台服务器上运行多个网站。
6.URL 重写与重定向:
强大的 rewrite 模块可以灵活地修改请求的 URL,实现 SEO 优化、域名迁移等功能。
四、 Nginx 工作原理:事件驱动模型
Nginx 之所以能高效处理并发,关键在于其主从多进程模型和事件驱动架构。
1.主进程:
以 root 身份运行,负责管理工作进程(读取配置、绑定端口、平滑重启等)。它不处理具体的网络请求。
2.工作进程:
由主进程创建,以非特权用户运行,负责处理实际的网络连接(HTTP 请求)。多个工作进程可以充分利用多核 CPU。

当一个工作进程启动后,它会开始监听共享的套接字,并在一个事件循环中等待事件(如新的连接、可读的数据、可写的缓冲区等)。一旦事件发生,工作进程会迅速处理它,然后立即返回事件循环等待下一个事件。这种非阻塞的方式避免了为每个连接创建线程或进程的开销。

五、部署nginx

[root@server ~]# setenforce  0           [root@server ~]# systemctl stop  firewalld[root@server ~]# systemctl disable  firewalld[root@server ~]# yum  install  nginx  -y[root@server ~]# nginx  -V  # 查看版本,编译器、配置参数等信息[root@server ~]# systemctl start  nginx   # 启动httpd[root@server ~]# systemctl enable  nginx  # 设置开机启动
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.[root@server ~]# systemctl status  nginx    # 查看状态,q键退出查看[root@server ~]# ps  -ef  |  grep  nginx  # 查看进程
root        1690       1  0 13:57 ?        00:00:00 nginx: master process /usr/sbin/nginx
nginx       1691    1690  0 13:57 ?        00:00:00 nginx: worker process
nginx       1692    1690  0 13:57 ?        00:00:00 nginx: worker process
root        1726    1510  0 14:00 pts/0    00:00:00 grep --color=auto nginx# 测试,Windows中打开浏览器输入服务器IP地址

六、 Nginx 的核心管理命令

安装Nginx

# 安装 Nginx
sudo dnf install -y nginx

启动 Nginx

systemctl start nginx

停止 Nginx

systemctl stop nginx

重启 Nginx

systemctl restart nginx

重新加载配置

systemctl reload nginx
# 或者使用 Nginx 自带的信号控制
nginx -s reload

检查服务状态

systemctl status nginx

测试配置文件语法

sudo nginx -t

七、防火墙配置

# 检查防火墙状态
sudo systemctl status firewalld# 如果防火墙未运行,启动并启用
sudo systemctl start firewalld
sudo systemctl enable firewalld# 配置防火墙规则
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

八、 Nginx 的重要文件和目录结构

路径说明
/etc/nginx/主配置目录,所有 Nginx 配置文件都存放在这里
/etc/nginx/nginx.conf主配置文件,这是 Nginx 启动时读取的第一个文件
/etc/nginx/default.d/另一个可以存放配置片段的目录
/etc/nginx/conf.d/默认服务器块配置目录,你创建的以 .conf 结尾的文件会被自动包含。这是配置虚拟主机的推荐位置
/usr/share/nginx/html/默认的 Web 根目录,存放你的网站静态文件(HTML, CSS, JS, 图片等)
/var/log/nginx/日志文件目录
access.log访问日志,记录所有客户端请求
/usr/sbin/nginxNginx 可执行主程序文件
/var/lib/nginx/Nginx 运行时的数据文件目录

九、虚拟主机

基于 IP 地址的虚拟主机
原理
如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,当用户请求的IP地址不同,则会访问到不同网页,且每个网站都有一个独立的IP地址。(常用)
注意:主机必须有多个IP地址

#1.初始配置
setenforce  0           # 恢复快照
systemctl stop  firewalld
systemctl disable  firewalld
yum  install  nginx  -y
systemctl start  nginx   # 启动httpd
systemctl enable  nginx  # 设置开机启动
#2.增加IP地址
nmcli c  modify ens160 +ipv4.addresses 192.168.145.150/24
nmcli c  modify ens160 +ipv4.addresses 192.168.145.151/24
#重新加载网卡,连接激活
nmcli c  reload
nmcli c  up  ens160
#3.创建目录写入文件方便验证
#4.修改配置文件
vim  /etc/nginx/conf.d/vshost.conf   # 添加内容
server {listen       80; #端口号默认80server_name  192.168.145.150;root         /www/ip150;}
server {listen       80;server_name  192.168.145.151;root         /www/ip151;}
#5.重启服务,测试

基于端口号的虚拟主机

vim  /etc/nginx/nginx.conf #添加内容
server {listen       5111; #端口号修改server_name  _;root         /www/port5111;error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}server {listen       5222; #端口号修改server_name  _;root         /www/port5222;error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}

基于域名的虚拟主机

# Linux端
# vim  /etc/hosts
# 添加如下内容:
192.168.145.130  www.zy.com
192.168.145.130  www.sxhkt.com# windows端,打开:
C:\Windows\System32\drivers\etc\hosts文件,添加如下内容:#运行cmd然后notepad hosts以管理员身份打开记事本才能修改保存 
192.168.145.130  www.zy.com
192.168.145.130  www.sxhkt.com
vim  /etc/nginx/nginx.conf 
# 定位第1行,添加:server {listen       80;server_name  www.zy.com;   # 写域名root         /www/zy;error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}server {listen       80;server_name  www.sxhkt.com;root         /www/sxhkt;error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}

十、基于https协议的静态网站

概念:
1.超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。
2.HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。
3.HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext TransferProtocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道。
4.HTTPS并不是一个新协议,而是HTTP+SSL(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间

5.SSL 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。到了1999年,SSL 应用广泛,已经成为互联网上的事实标准。IETF 就把SSL 标准化。标准化之后SSL被改为 TLS(Transport Layer Security传输层安全协议)

SSL协议分为两层:

SSL记录协议 (SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能
SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等

SSL协议提供的服务:

认证用户和服务器,确保数据发送到正确的客户机和服务器
加密数据以防止数据中途被窃取
维护数据的完整性,确保数据在传输过程中不被改变

HTTPS通信机制

  1. 握手阶段(Handshake)
    客户端发起请求:浏览器发送ClientHello消息,包含支持的加密算法列表和随机数
    服务器响应:返回ServerHello消息,选定加密算法并发送服务器随机数+数字证书(包含公钥)
    证书验证:客户端验证证书有效性(CA机构、有效期等)
    密钥交换:客户端生成预主密钥(Pre-Master Secret),用服务器公钥加密后传输
    会话密钥生成:双方通过随机数和预主密钥计算得到对称加密所需的会话密钥
  2. 加密通信阶段
    对称加密传输:使用协商好的会话密钥加密HTTP报文
    数据完整性校验:通过MAC(消息认证码)防篡改
    会话恢复:支持Session ID或Session Ticket机制复用已建立的加密参数

使用LNMP搭建私有云存储

搭建LNMP环境

[root@server ~]# yum  install  nginx  mariadb-server  php*  -y
上传软件

使用xftp将nextcloud-25.0.1.zip软件压缩包上传到Linux的根目录,并解压缩

[root@server ~]# cd  /[root@server /]# unzip  /nextcloud-25.0.1.zip 

设置nextcloud安装命令权限

[root@server /]# chmod  -Rf  777  /nextcloud

设置数据库

[root@server /]# systemctl start  mariadb   # 启动数据库[root@server /]# mysql# 数据库设置
MariaDB [(none)]> create  database  nextcloud;  # 创建数据库MariaDB [(none)]> create  user  'nextcloud'@'localhost' identified  by  '123456';   # 创建用户及密码MariaDB [(none)]> grant all on  nextcloud.*  to  'nextcloud'@'localhost';
# 设置权限MariaDB [(none)]> exit       # 退出

配置nginx

[root@server /]# vim  /etc/nginx/nginx.conf server {listen       80;server_name  192.168.48.130;root         /nextcloud;}

安装
打开浏览器后输入服务器IP地址,进入nextcloud安装向导
管理员的用户名即密码自定
存储与数据库:选择MySQL/MariaDB,设置数据库用户为nextcloud,密码:123456,数据库名:nextcloud,主机名:localhost
最后访问测试

http://www.dtcms.com/a/598052.html

相关文章:

  • 网站开发 外包 哪家开发公司账务处理
  • 【python】python安装使用pytorch库环境配置
  • 建设工程八大员考试网站网站验证码调用
  • 织梦网站面包屑导航怎么做淘宝培训
  • 网站建设分工的通知广州网站建设外包建设推广
  • 从3W到LNMP搭建私有云存储
  • 第4章:数据获取与质量控制
  • linux磁盘分区挂载
  • 双指针:算法新手的第一道砍
  • 建设网站的语言北京最新进出京政策
  • 金融监管制度问答助手项目学习笔记(二)----RAG和评估
  • QT linux 静态编译问题记录
  • QT -- 初识
  • 平台推广网站排名嘉兴做网站优化
  • iis 网站访问权限设置网页设计学科门类是啥
  • ubuntu双网卡绑定分享
  • Android监听运行应用的任务变化包含Activity及Service
  • 免费网站推荐货源深圳高端家政服务公司
  • MATLAB语言简介
  • 西安个人做网站不记得域名管理网站
  • 常州网站制作企业单位网站建设维护情况报告
  • Java反射完全指南:从入门到精通
  • seo网站推广报价企业系统包括哪些系统
  • 冬日暖居:科学应对暖气病的生活哲学
  • 网站建设的7个基本流程网站下面版权代码
  • 从文字到世界:空间智能是人工智能的下一个前沿
  • 51单片机逆向
  • 网站域名的管理密码如何索取wordpress禁止加载头部
  • Dubbo-学习笔记1
  • 怎样建设个自己的网站首页中信建设有限责任公司电话打不通