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

Web与Nginx

Web与Nginx网站服务入门指南

一、Web基础概念

1.1 什么是Web?

Web(World Wide Web,万维网)是运行在互联网之上的超文本信息系统,依赖于HTTP/HTTPS协议实现浏览器与服务器之间的交互。

核心特点:

  • 分布式:资源分布在世界各地的服务器上
  • 跨平台:只要有浏览器,就能访问资源
  • 无状态:每次HTTP请求都是独立的(除非使用Cookie/Session)

1.2 B/S架构模型

Web采用B/S架构(Browser/Server):

  • Browser(浏览器):用户入口,发送请求、渲染页面
  • Server(服务器):接收请求,返回所需资源或动态内容
用户浏览器 → Web服务器(Nginx/Apache) → 应用服务器(PHP/Python/Java) → 数据库(MySQL/Redis)

1.3 Web请求与响应过程

一次完整的Web访问包括以下步骤:

  1. 输入URL:用户在浏览器输入网址
  2. DNS解析:浏览器将域名解析为IP地址
  3. 建立连接:浏览器与Web服务器建立TCP连接(3次握手)
  4. 发送请求:浏览器发起HTTP请求(GET/POST)
  5. 服务器处理:Web服务器处理请求,可能需要应用服务器和数据库参与
  6. 返回响应:服务器将结果打包成HTTP响应返回
  7. 渲染页面:浏览器解析HTML、加载CSS/JS、渲染最终页面

1.4 静态资源与动态资源

  • 静态资源:不需要服务器额外处理,直接返回(HTML、CSS、图片、视频、JS文件)
  • 动态资源:需要服务器端代码计算生成(PHP脚本、Python Flask/Django、Java Servlet)

1.5 Web发展阶段

  • Web 1.0(只读):静态页面为主,用户只能浏览
  • Web 2.0(交互式):用户可生成内容,AJAX技术普及
  • Web 3.0(智能化):语义网、区块链、去中心化概念兴起

二、HTTP与HTTPS协议

2.1 HTTP与HTTPS区别

  • HTTP:明文传输,不安全
  • HTTPS:在HTTP上加入SSL/TLS加密,防止中间人攻击

2.2 HTTPS握手流程

  1. 客户端Hello:浏览器发起请求,告诉服务器支持的加密算法
  2. 服务端Hello+证书:网站返回SSL证书,选择加密算法
  3. 客户端验证证书:浏览器检查证书是否可信
  4. 协商密钥:双方生成临时密钥用于对称加密
  5. 加密通信开始:后续HTTP数据通过加密通道传输

2.3 HTTP状态码详解

状态码类型含义通俗解释
2002xx成功OK请求成功,东西拿到了
3013xx重定向Moved Permanently页面永久搬家了
3023xx重定向Found页面临时搬家
3043xx重定向Not Modified内容未变,可用缓存
4004xx客户端错误Bad Request请求格式错误
4014xx客户端错误Unauthorized需要先登录
4034xx客户端错误Forbidden没有访问权限
4044xx客户端错误Not Found页面找不到
5005xx服务器错误Internal Server Error服务器内部错误
5025xx服务器错误Bad Gateway网关错误
5035xx服务器错误Service Unavailable服务不可用
5045xx服务器错误Gateway Timeout网关超时

三、Nginx入门

3.1 Nginx简介

Nginx(“engine x”)是一个高性能的HTTP和反向代理服务器,由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发。

主要功能:

  • 静态资源服务
  • 反向代理
  • 负载均衡
  • 高并发处理

优势:

  • 轻量级,占用内存小
  • 支持百万级并发访问
  • 稳定可靠,开源且社区活跃

3.2 Nginx与Apache差异

  • Nginx基于事件驱动,Apache基于进程驱动
  • Nginx避免子进程概念,Apache基于子进程
  • Nginx在内存消耗和连接方面表现更好
  • Nginx支持热部署,Apache不支持
  • Nginx对静态文件处理和反向代理有明显优势

3.3 Nginx进程结构

Nginx采用多进程方式:

  • 主进程:管理 worker 进程
  • Worker进程:实际处理网络请求

Worker进程数量一般设置为核心数,充分利用CPU资源,同时避免进程竞争导致的上下文切换损耗。

Nginx 安装与配置完整指南

4.1 下载 Nginx

在 Linux 系统中使用 wget 命令下载 Nginx 稳定版本:

wget https://nginx.org/download/nginx-1.20.2.tar.gz

下载完成后,系统会显示下载进度和保存路径信息。

4.2 安装依赖环境

安装编译 Nginx 所需的依赖包:

# 关闭防火墙(根据实际环境需求)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0# 安装编译工具和依赖库
yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel

安装过程会自动解决依赖关系并安装所需的所有软件包。

4.3 创建用户并解压

创建 Nginx 运行用户并解压安装包:

# 创建Nginx用户(不允许登录系统)
useradd -M -s /sbin/nologin nginx# 解压Nginx安装包到/opt目录
tar zxvf nginx-1.20.2.tar.gz -C /opt/

4.4 编译安装 Nginx

进入解压目录并进行编译安装:

# 进入Nginx源码目录
cd /opt/nginx-1.20.2/# 配置编译选项
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module# 编译并安装
make && make install

4.5 检查 Nginx 配置

验证 Nginx 配置文件语法是否正确:

nginx -t

如果配置正确,将显示:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

4.6 启动 Nginx 服务

直接使用 nginx 命令启动服务:

nginx

4.7 查看 Nginx 版本信息

验证安装版本和编译参数:

nginx -V

输出将显示版本号、编译器和模块信息。

4.8 添加 Nginx 系统服务

创建系统服务脚本以便管理:

vim /etc/init.d/nginx

添加以下内容:

#!/bin/bash
#chkconfig: 35 99 20
#description:Nginx Service Control ScriptCOM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"case "$1" in
start)$COM
;;stop)kill -s QUIT $(cat $PID)
;;restart)$0 stop$0 start
;;reload)kill -s HUP $(cat $PID)
;;*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1esac
exit 0

4.9 设置服务权限并管理

给脚本添加执行权限并设置为系统服务:

# 添加执行权限
chmod +x /etc/init.d/nginx# 添加为系统服务
chkconfig --add nginx# 设置开机自启
chkconfig nginx on# 使用systemctl管理服务
systemctl start nginx    # 启动
systemctl stop nginx     # 停止
systemctl restart nginx  # 重启
systemctl reload nginx   # 重载配置
systemctl status nginx   # 查看状态# 或者使用service命令
service nginx start|stop|restart|reload

至此,Nginx 已经成功安装并配置为系统服务,可以通过多种方式管理 Nginx 服务。

http://www.xdnf.cn/news/20134.html

相关文章:

  • MCP 和 Fuction Call 有什么不同
  • Python基础(①④内存管理机制)
  • 【Element Plus 表单组件样式统一 CSS 文字特效实现指南】
  • 啥是两化融合?
  • 算法模板(Java版)_哈希表
  • 手写Java泛型,彻底掌握它!
  • 结合prompt分析NodeRAG的build过程
  • MySQL事务的四大特性(ACID)
  • 代码随想录二刷之“贪心算法”~GO
  • HTML 基本结构
  • 一篇文章带你彻底搞懂 JVM 垃圾收集器
  • 大数据开发计划表(实际版)
  • Python入门教程之数学运算符
  • 基于单片机智能水龙头/智能洗漱台设计
  • STM32F103_Bootloader程序开发15 - 从Keil到vscode + EIDE + GCC的迁移实践
  • 8051单片机-成为点灯大师
  • STL重点
  • Web Session 机制深度解析
  • Windows 11使用技巧
  • 汉诺塔递归过程推导(详细+省流)
  • 2025 年高教社杯全国大学生数学建模竞赛A 题 烟幕干扰弹的投放策略完整成品 思路 模型 代码 结果 全网首发高质量!!!
  • 2025跨境独立站最新最完整的搭建流程
  • AI智汇社区凭什么半年估值破亿?这家公司让普通人也能玩转AI开发
  • 【IO】共享内存、信息量集
  • 【已更新文章+代码】2025数学建模国赛B题思路代码文章高教社杯全国大学生数学建模-碳化硅外延层厚度的确定
  • 《设计模式之禅》笔记摘录 - 19.备忘录模式
  • 新增MCP工具管理,AI对话节点新增工具设置,支持对接企业微信机器人,MaxKB v2.1.0版本发布
  • 理解进程栈内存的使用
  • 嵌入式第四十六天(51单片机)
  • git提交代码