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

nginx服务

Web-Nginx服务

1. Web服务内涵

1.1 Web服务定义

Web服务,即WWW(World Wide Web):全球信息广播服务,允许用户通过浏览器访问互联网文档资源。

1.2 Web服务程序

Nginx

Nginx是一款开源、高性能的HTTP和反向代理服务器,也能够提供IMAP/POP3/SMTP服务。它以其稳定性、丰富的功能集、简单的配置文件和低系统资源消耗而闻名。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,自2004年首次公开发布以来,已经成为许多高流量网站的首选,包括一些知名的中国网站如百度、京东、新浪、网易、腾讯和淘宝。

Apache

Apache是全球使用排名第一的Web服务器软件。它是一个开源的网页服务器,可以在几乎所有广泛使用的计算机平台上运行,包括各种Unix系统、Windows和Linux平台。Apache以其跨平台性和安全性而广泛使用,被认为是最流行的Web服务器端软件之一。Apache的特点是快速、可靠,并且可以通过简单的API扩展,支持将Perl、Python等解释器编译到服务器中。

1.3 HTTP/HTTPS协议核心知识

URL结构–统一资源定位符
<协议>://<主机或主机名>[:port]/<目录资源,路径>
#https://nginx.org/en/    --nginx.org为域名,被DNS域名解析后转化同为<主机或主机名>[:port]格式
端口分类
  • 0-1023:系统保留端口

  • 1024-41951:注册端口

  • 41952-60000:动态/私有端口

    协议端口协议端口协议端口
    ftp21ssh22telnet23
    smtp25dns53http80
    ntp123snmp161https443
    mysql3306php-fpm9000
HTTP常用请求方法
方法功能描述
GET获取资源
HEAD获取资源的头信息
POST提交数据到服务器后端
PUT提交数据及直接存储数据到服务器
DELETE请求服务器删除指定资源
HTTP状态码
  • 1xx(信息性状态码):表示接收的请求正在处理。
  • 2xx(成功状态码):表示请求正常处理完毕。
  • 3xx(重定向状态码):需要后续操作才能完成这一请求。
  • 4xx(客户端错误状态码):表示请求包含语法错误或无法完成。
  • 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误
常见状态码说明
200客户端请求成功
400客户端请求语法错误
401请求未经授权
403服务器收到请求,但是拒绝提供服务
404请求资源不存在
500服务器发生不可预期的错误
502作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503服务器当前不能处理客户端的请求,一段时间后可能恢复正常
HTTP工作流程:
  1. 建立连接:浏览器(客户端)向 HTTP 服务器发起连接请求,服务器决定是否接受连接:接受则建立 TCP 连接(HTTP 基于 TCP),不接受则关闭连接。
  2. 接受请求:服务器通过网口、TCP/IP 协议栈,读取浏览器发送的 HTTP 请求报文。
  3. 处理请求:HTTP 服务器软件进程解析请求报文,明确请求的操作(如获取某个网页资源)。
  4. 访问资源:服务器根据请求报文里的资源标识,从数据存储(如文件系统、数据库)中读取对应的资源。
  5. 构建响应:服务器创建 HTTP 响应报文,并添加正确的响应头部(如状态码、内容类型等)。
  6. 发送响应:服务器将响应报文通过协议栈、网口发送回浏览器客户端。
  7. 记录事务:服务器把本次请求 - 响应的过程信息(如请求时间、资源、状态码)记录到日志中。

2. Nginx服务特征

2.1 Nginx核心特性

  • 高性能:事件驱动、异步非阻塞架构
  • 高并发:单机可支持数万并发连接
  • 低内存:高效的内存管理机制
  • 热部署:支持不停机更新配置

2.2 架构设计

进程模型

text

主进程 (Master)├── Worker进程1├── Worker进程2└── Worker进程N (默认等于CPU核心数)
关键工作机制
  • 抢占机制:通过accept_mutex互斥锁实现请求分发
  • 异步非阻塞:基于Linux epoll模型,避免worker阻塞

2.3 核心功能

正向代理
  • 角色:客户端代理
  • 特点:隐藏客户端身份
  • 应用场景:访问限制资源、网络加速
反向代理
  • 角色:服务器端代理
  • 特点:隐藏服务器真实IP,负载均衡
  • 应用场景:网站高可用、安全防护
负载均衡
  • 功能:将请求分发到多个后端服务器
  • 算法:轮询、权重、IP哈希等
  • 优势:提高系统吞吐量和可用性

3.Nginx实战

3.1 环境准备

# 关闭安全组件selinux以及防火墙
setenforce 0
systemctl disable --now firewalld# 安装Nginx(需要配置仓库)
yum install nginx -y# 服务管理
systemctl enable --now nginx	#启动nginx服务(包括开机自启)
systemctl status nginx			#查看nginx服务状态
nginx -V	#查看nginx详细参数
nginx -t	#检查nginx配置文件语法

3.2 Nginx常用配置文件

/etc/nginx/nginx.conf				#主配置文件
/etc/nginx/conf.d/					#子配置目录
/etc/nginx/fastcgi.conf				
/etc/nginx/fastcgi_params
/etc/nginx/*.default				#默认配置
/usr/share/nginx/html				#网页默认目录
/var/log/nginx/access.log			#访问日志
/var/log/nginx/error.log			#错误日志

3.3 核心配置文件解析

/etc/nginx/nginx.conf

#配置层级
main {                      # 全局配置events {                # 事件模块}http {                  # HTTP模块server {            # 虚拟主机location {      # URI匹配}}}
}
#全局配置段
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;#事件模块
events {worker_connections 1024;use epoll;
}#http常用配置
http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';include /etc/nginx/conf.d/*.conf;   #加载子配置项#server配置段server {  listen       80;        # 监听IPV4端口server_name  _;         # 访问的域名root         /usr/share/nginx/html;    # 网页默认目录include /etc/nginx/default.d/*.conf;   # 子配置文件存储路径# location配置段location / {root   /usr/share/nginx/html;     # 相对路径网站根目录alias  /usr/share/nginx/html/;    # 绝对路径网站根目录index  index.html index.htm;      # 默认首页文件deny 192.168.58.200;       # 禁止访问的ip地址,可以为allallow 192.168.58.1;     # 允许访问的ip地址,可以为all}error_page 404 /404.html;        # 404时返回给客户端的页面location = /40x.html {}error_page 500 502 503 504 /50x.html;  # 50x错误返回给客户端的页面location = /50x.html {}}# https虚拟主机定义server {listen       443 ssl http2;    # 监听的IPV4端口server_name  _;root         /usr/share/nginx/html;   # 网页默认目录ssl_certificate "/etc/pki/nginx/server.crt";   # 证书存储路径ssl_certificate_key "/etc/pki/nginx/private/server.key"; # 密钥存储include /etc/nginx/default.d/*.conf;error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}}

3.4 常用配置详解

server_name匹配规则

精确匹配server_name www.example.com;

通配符匹配server_name *.example.com;

正则匹配server_name ~^www\.example\.*$;

匹配优先级:精确匹配 > 通配符匹配 > 正则匹配

root与alias区别
# root示例 - 路径叠加
location /images/ {root /data;
}
# 访问 /images/1.jpg → /data/images/1.jpg# alias示例 - 路径替换
location /images/ {alias /data/images/;
}
# 访问 /images/1.jpg → /data/images/1.jpg
location匹配优先级
location = /uri        # 精确匹配 (最高)
location ^~ /uri       # 前缀匹配
location ~ pattern     # 正则匹配(区分大小写)
location ~* pattern    # 正则匹配(不区分大小写)
location /uri          # 通用匹配 (最低)

4. 虚拟主机配置

4.1 基于IP的虚拟主机

# 添加IP地址
nmcli c modify ens160 +ipv4.addresses 192.168.58.101/24
nmcli c modify ens160 +ipv4.addresses 192.168.58.102/24
nmcli c up ens160# 配置虚拟主机
vim /etc/nginx/conf.d/test.conf
server {listen 80;server_name 192.168.58.101;root /www/ip101; 
}
server {listen 80;server_name 192.168.58.102;root /www/ip102;
}
#简易静态网站搭建
mkdir -p /www/ip{101,102}
echo ip101 > /www/ip101
echo ip102 > /www/ip102

4.2 基于端口的虚拟主机

# 配置虚拟主机
vim /etc/nginx/conf.d/test.conf
server {listen 10001;server_name 192.168.58.100;root /www/port10001;
}
server {listen 10002;server_name 192.168.58.100;root /www/port10002;
}#简易搭建网站
mkdir -p /www/port{10001,10002}
echo port10001 > /www/port10001
echo port10002 > /www/port10002

4.3 基于域名的虚拟主机

域名定义:

是由一串用点分隔的名字组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。由于IP地址不方便记忆并且不能显示地址组织的名称和性质,人们设计出了域名,并通过域名系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

域名解析流程:

浏览器缓存–>操作系统缓存(hosts文件)–>路由缓存–>ISP的DNS服务器–>根服务器

windows下的hosts文件路径:C:\Windows\System32\drivers\etc\hosts (需要管理员权限)

Linux下的hosts文件路径:/etc/hosts

# 配置虚拟主机
vim /etc/nginx/conf.d/test.conf
server {listen 80;server_name www.zy.com;root /www/zy;
}
server {listen 80;server_name www.shxkt.com;root /www/shxkt;
}#配置本地hosts映射
vim /etc/hosts
192.168.58.100 www.zy.com www.shxkt.com#windows客户端hosts配置
192.168.58.100 www.zy.com www.shxkt.com

[!NOTE]

1.html网页文件必须存在

2.修改配置文件后需要重启nginx服务生效

5. HTTPS配置

5.1 HTTPS工作原理

SSL/TLS(SSL升级版本)工作流程
  1. ClientHello:客户端支持的协议版本、加密算法
  2. ServerHello:服务器确认协议、发送证书
  3. 密钥交换:客户端验证证书、生成会话密钥
  4. 加密通信:使用对称密钥加密数据传输

5.2 SSL证书配置

#证书配置汇总
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/certs/brs.crt -keyout /etc/nginx/certs/brs.key -subj "/C=86/ST=sichuan/L=chengdu/O=openlab/OU=RHCE/CN=server/emailAddress=andy@qq.com" -utf8
#在/etc/nginx/certs目录下制作整数所用的私钥文件brs.key
mkdir /etc/nginx/certs
openssl  genrsa  -aes128  2048 > /etc/nginx/certs/brs.key# 制作证书
openssl  req  -utf8  -new  -key  /etc/nginx/certs/brs.key  -x509  -days  365  -out  /etc/nginx/zy.crt# 在加载SSL支持的Nginx并使用上述私钥时除去必须的口令
cd  /etc/nginx/certs
cp  brs.key  brs.key.org
openssl rsa -in brs.key.org -out brs.key

5.3 HTTPS服务器配置

vim  /etc/nginx/conf.d/https.conf
server {listen 443 ssl http2;server_name www.brs.com;root /www/brs;ssl_certificate /etc/nginx/certs/brs.crt;ssl_certificate_key /etc/nginx/certs/brs.key;
}# HTTP重定向到HTTPS
server {listen 80;server_name www.brs.com;return 301 https://www.brs.com;
}#修改本地hosts域名映射关系
vim  /etc/hosts
192.168.58.100  www.brs.com		#文件末尾添加#windows客户端hosts配置
192.168.58.100 www.brs.com

6.LNMP部署

6.1LNMP定义

LNMP – Linux、Nginx、Mysql、Php

6.2LNMP环境搭建

安装基础服务
yum  install  nginx  mysql-server  php*  -y
解压nextcloud(开源网站)压缩包
cd  /
unzip  unzip nextcloud-29.0.16.zip 
设置nextcloud目录权限
chown -R nginx:nginx /nextcloud
chmod -R 777 /nextcloud
配置数据库
systemctl start  mysqld   			#启动数据库
mysql> create database nextcloud;	#创建数据库
mysql> create user 'nextcloud'@'localhost' identified by '123';	#创建用户及密码
mysql> grant all on  nextcloud.*  to  'nextcloud'@'localhost';	#设置权限
mysql> exit       # 退出
systemctl restart  mysqld	#重启mysql使配置生效
配置nginx
vim /etc/nginx/conf.d/lnmp.conf
server {listen 80;server_name 192.168.58.101;root /nextcloud;index index.php index.html;		#默认索引文件,优先级从左到右依次降低location / {try_files $uri $uri/ /index.php$request_uri;	#匹配所有请求}location ~ \.php(?:$|/) {	#正则表达式匹配所有.php结尾和包含.php/的请求fastcgi_split_path_info ^(.+?\.php)(/.+)$;	#分割请求路径为脚本路径和路径信息include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;	#设置php脚本文件路径fastcgi_param PATH_INFO $fastcgi_path_info;		#传递信息给php脚本fastcgi_pass unix:/run/php-fpm/www.sock;fastcgi_index index.php;}
}#重启nginx
systemctl  restart  nginx
安装

打开浏览器后输入服务器IP地址,进入nextcloud安装向导

管理员的用户名与密码自定

存储与数据库:选择MySQL/MariaDB,设置数据库用户为nextcloud,密码:123,数据库名:nextcloud,主机名:localhost

7. 故障排查

7.1日志分析

# 访问日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;

7.2状态监控

server {listen 8080;server_name localhost;location /nginx_status {stub_status on;access_log off;allow 127.0.0.1;deny all;}location /server_status {stub_status on;access_log off;allow 127.0.0.1;deny all;}
}

7.3排查常用命令

# 检查配置
nginx -t# 查看进程
ps aux | grep nginx# 查看端口
netstat -tlnp | grep nginx
ss -tlnp | grep nginx# 实时日志
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log# 压力测试
ab -n 1000 -c 100 https://www.brs.com/
http://www.dtcms.com/a/583647.html

相关文章:

  • 单位网站建设做到哪个科目适合高中生做网站的主题
  • 新网站要多久收录厦门网站设计公司推荐
  • 用html5做的网站源码7一12岁手工简单又实用
  • 建网站 考虑盱眙建设局网站
  • NSmartProxy:一款.NET开源、跨平台的内网穿透工具
  • 久久建筑网站内搜索安徽住房与城乡建设厅网站
  • 网站设计与建设系统高端定制网站速度
  • 基于openEuler操作系统的Docker部署与AI应用实践操作与研究
  • 中国建设网站的公司做网站的是怎么赚钱
  • 开江建设局网站浙江软装公司
  • 江西网站建设哪家好国际新闻最新消息今天乌克兰与俄罗斯
  • 奎文区建设局网站wordpress 小工具 功能
  • 企业形象网站开发业务范畴wordpress 分享按钮插件
  • 常见的网站推广方式有哪些广告点击网站源码
  • 网站建设维护内容微信怎么做自己的网站
  • 快手日常实习(测开)面经
  • 重庆网站建设百度推广wordpress用redis和mem
  • 中国建设银行汕头支行网站进入公众号即弹出图文
  • 优秀毕业设计网站设计欧米茄官网网站
  • 代码随想录 Q79.全排列
  • 网站做网站反向代理违法360免费
  • 网站建设的基本流程和技术规范青岛网站建设服务平台
  • 短视频制作价格明细网站seo推广平台
  • 招聘预算网站怎么做wordpress网站破解
  • visual studio 做网站网站建设 工商注册
  • 三大特性+盒子模型
  • 有名的网站建设网站与app的区别
  • 衡水做企业网站的公司彩票网站做维护是什么
  • 河南省建设工程信息网站江门网站制作华企立方
  • 网站备案幕布 下载报名网站建设公司哪里有