Nginx 的安装和使用
Nginx 的安装和使用
Nginx是一款轻量级的Web 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,是 lgor Sysoev 为俄罗斯访问量第二的 rambler.ru 站点设计开发的,用C语言编写。中国大陆使用 Nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx 常用功能
反向代理
-
先来了解一下什么是正向代理:
代理的是内部网络(浏览器)对外部网络(Internet)的请求(如VPN),客户端将请求和访问目标发送到代理服务器,再由代理服务器将请求发送到目标服务器,并将返回信息传递回客户端。
发送请求,返回结果,对外表现为客户端。
-
反向代理:
代理的是外部网络对内部网络的请求,代理服务器接收来自外部的请求后,将请求发送到内部服务器,并将服务器的返回信息返回给请求方。
接收请求,返回结果,对外表现为服务器。
负载均衡
将数据流量按照一定规则分摊到多个服务器,减轻一台服务器的压力,从而提高服务的性能与可靠性。
Nginx 负载均衡策略
Nginx 常见负载均衡策略 6 种:
负载均衡策略 | 说明 |
---|---|
轮询 | 默认方式 |
weight | 权重 |
ip_hash | 根据客户端 ip 计算的 hash 值分配 |
least_conn | 最少连接数 |
url_hash | 根据请求的 URL 地址的 hash 值分配 |
fair | 响应时间 (需下载第三方模块) |
动静分离
作为web服务器,自然可以处理web资源,但不同于tomcat一类的web应用服务器,无法处理解析 jsp 等动态资源,只能处理 html,css,js 等静态资源。
web服务器的并发能力要优于web应用服务器,将静态资源放到 Nginx,可以提高静态资源的访问效率。
Nginx 的安装(Linux)
安装
从 Nginx 官网下载安装包
# 安装Nginx的依赖库
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 解压安装包
tar -zxvf nginx-1.10.0.tar.gz
# 配置Nginx安装路径
cd nginx-1.10.0
./configure --prefix=/usr/local/nginx
# 编译并安装
make && make install
启动与关闭
简单介绍一下nginx的目录结构
├── client_body_temp # _temp结尾的均为临时目录
├── conf # Nginx所有配置文件的目录
│ ├── nginx.conf # Nginx主配置文件
├── fastcgi_temp # fastcgi临时数据目录
├── html # Nginx默认站点目录
│ ├── 50x.html # 错误页面替代文件
│ └── index.html # 默认的首页文件
├── logs # Nginx日志目录
│ ├── access.log # 访问日志文件
│ ├── error.log # 错误日志文件
│ └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp
├── sbin # Nginx命令目录
│ └── nginx # Nginx的启动命令
├── scgi_temp
└── uwsgi_temp
启动
#在nginx/sbin目录下,有一个nginx可执行程序
./nginx
测试:访问虚拟机地址

关闭
./nginx -s stop
更新配置文件
# Nginx运行状态下执行
./nginx -s reload
配置文件描述
#user nobody;
#工作进程
worker_processes 1;
events {
#连接池连接数
worker_connections 1024;
}
#请求方式
http {
#媒体类型
include mime.types;
#默认媒体类型 二进制
default_type application/octet-stream;
#上传文件
sendfile on;
#超时时间
keepalive_timeout 65;
#开启gzip压缩
#gzip on;
#服务器配置
server {
#监听端口
listen 80;
#监听域名
server_name localhost;
#请求头信息
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#请求映射规则,/代表所有请求路径
location / {
#请求转发地址
root html;
#欢迎页
index index.html index.htm;
#转发连接超时时间
proxy_connect_timeout 600;
#转发读取超时时间
proxy_read_timeout 600;
}
}
}
Nginx 的使用
反向代理
Nginx代替服务接收请求,比如代理发送到tomcat的请求
-
修改Nginx配置文件:
# 在server块中修改location中的内容 location / { proxy_pass http://127.0.0.1:8080; root html; index index.html index.htm; proxy_connect_timeout 600; proxy_read_timeout 600; }
这样直接访问虚拟机ip,无需添加端口号即可直接访问tomcat

负载均衡
-
在http块中添加一个upstream修饰块
upstream tomcatCluster{ server 127.0.0.1:8080; server 127.0.0.1:8090; }
-
修改location 中反向代理地址
location / { proxy_pass http://tomcatCluster; root html; index index.html index.htm; proxy_connect_timeout 600; proxy_read_timeout 600; }
Nginx 的负载均衡策略配置
-
轮询
默认策略,请求按照顺序依次发送到不同服务器
-
权重
# weight 的值必须是大于等于 1 的整数,不写默认为 1 upstream tomcatCluster{ server 127.0.0.1:8080 weight=4; # 接收到请求的概率为 4/(4 + 1) server 127.0.0.1:8090 weight=1; }
-
ip_hash
根据客户端ip的hash值分配,可以使同一客户端的请求始终发送到同一服务器上,可以解决tomcat集群的session共享问题。
upstream tomcatCluster{ ip_hash; server 127.0.0.1:8080; server 127.0.0.1:8090; }
但服务器宕机依然会造成session丢失,解决方案:
-
利用tomcat的广播机制实现session共享(仅支持windows)
-
更好的方案:可以使用Redis进行session共享
-
-
url_hash
根据访问url的hash值分配,可以使同一资源请求发送到同一台服务器,减少资源获取时间,提高缓存的利用率。
upstream tomcatCluster{ hash $request_uri; server 127.0.0.1:8080; server 127.0.0.1:8090; }
-
least_conn
将请求分配到当前连接数较少的服务器
upstream tomcatCluster{ least_conn; server 127.0.0.1:8080; server 127.0.0.1:8090; }
-
fair
根据响应时间分配,要使用这个策略需要先安装 nginx_upstream_fair 模块,安装过程就不在这里详述了。
upstream tomcatCluster{ fair; server 127.0.0.1:8080; server 127.0.0.1:8090; }
动静分离
静态资源直接交由Nginx缓存,jsp等动态资源仍然交给tomcat处理。
在Nginx虚拟机中新建一个 images 目录,并上传一张图片
-
修改Nginx配置文件:
# 在server块中添加location块 location ~* \.(gif|jpg|png|jpeg)$ { root /upload/images; }
测试:访问 虚拟机ip/图片名

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)