前言
Nginx是一种运行效率极高的网络服务器软件,常被用作网站的前端接入设备。企业级系统部署中,它发挥着关键作用。文章详细介绍了Nginx的四大主要用途,包括作为反向代理服务器转发请求,提供静态文件服务,实施访问频率控制,以及支持安全加密传输。此外,还深入探讨了如何进行基础环境搭建和复杂参数设置。
基础环境准备
# 安装Nginx
yum install -y nginx
# 启动并设置开机自启
systemctl start nginx
systemctl enable nginx
# 验证服务状态
systemctl status nginx
核心配置文件路径反向代理配置
反向代理是Nginx的一项核心用途,它将客户方的访问信息传递给内部服务器,能够达成分散工作负担、遮蔽实际服务位置、设立单一访问通道等目标。
基础反向代理配置
将请求中转给192.168.1.100:8080的后台服务,需要新建站点设置文件,文件路径为/etc/nginx/conf.d/proxy.conf。
server {
listen 80;
服务名是example.com,即你的网站地址或服务器地址。
# 日志配置
日志文件位于目录 /var/log/nginx/proxy_access.log,该文件被用作主访问日志。
错误日志存放在 /var/log/nginx/proxy_error.log 中,并且记录级别为警告。
# 反向代理核心配置
location / {
转发到192.168.1.100的8080端口上,那里是实际的服务位置。
转发请求时,将客户端提供的Host字段原样输出,确保目标服务器获取正确的域名信息
转发请求头 X-Real-IP 的值为访客来源地址; 注释说明这是为了传递客户方的真实IP地址
设置转发头 X-Forwarded-For 的值为添加的代理 IP, 用于传递整个代理链的 IP 信息
设置代理头信息X-Forwarded-Proto为请求的协议类型,即使用请求所采用的传输协议,可以是HTTP或者HTTPS
}
}
带缓存的反向代理(优化性能)
为了降低服务器端的负担,可以设置Nginx来存储非动态内容,例如图像文件、代码和样式表单,以此减轻工作负荷。
http {
# 全局缓存配置(放在http块中)
设置缓存目录为 /var/cache/nginx/proxy_cache
levels=1:2
keys_zone=PROXY_CACHE:10m
max_size=10g
inactive=7d
use_temp_path=off;
server {
# ... 其他配置同上 ...
文件名若以特定格式结尾,则进行匹配,这些格式包括jpg、jpeg、png、gif、js、css
通过代理服务器转发请求到192.168.1.100的8080端口,将流量导向该地址,实现远程访问功能
设置缓存功能,与前面定义的keys_zone建立关联,以此启用缓存机制。
缓存响应码200和304的结果,有效期持续24小时。
缓存所有响应10分钟,针对非标准状态码
设置缓存标识时,需包含主机名、请求路径、参数以及参数值,以此保证标识的唯一性。
设置响应字段 X-Cache-Status 为上游缓存状态值;该字段用于表明缓存命中与否;具体状态为命中或未命中。
}
}
}
静态资源访问配置
在服务器上,将位于/data/目录中的各类文件,包括图像、脚本和样式表等,设置成可通过网络路径供外部用户获取。接下来,需要生成一个特定的站点配置文件,该文件应放置于/etc/nginx/conf.d/目录下,并命名为.conf。
server {
listen 80;
server_name example.com; # 你的域名或服务器IP
# 日志配置(单独记录静态资源访问日志,便于分析)
日志文件位于 /var/log/nginx/static_access.log, 默认日志处理程序为主程序。
错误记录在目录 /var/log/nginx 下名为 static_error.log 的文件中,记录级别为警告。
# 静态资源核心配置:匹配 /static/ 路径的请求
location /static/ {
定位到主机端静态文件库,该目录名后需加一个斜杠,其值应与位置设定相吻合
root /data/;
尝试检索请求路径对应的资源,若不存在则返回首页文件
打开 http://example.com/static/img/logo.png 之后,就能够获取到 /data/static/img/logo.png 的内容
目录浏览功能关闭, 这样可以防止泄露文件夹布局
有效期一天;用来调整浏览器的数据存储期限;目的是降低不必要的网络访问次数
设置缓存指令为公共, 设置最大存活时间为一天, 这个配置需要和过期时间指令联合使用以强化缓存机制。
}
直接通过文件后缀匹配,忽略未经过 /static/ 路径的静态资源访问情况
文件类型为jpg或者jpeg,或者png,或者gif,或者bmp,或者svg,或者js,或者css,或者ico,或者woff,或者woff2,或者ttf,或者eot时,进行匹配
root /data/;
字体和样式文件能够设定更长的临时存储期限,具体为七天,这个时间长度比其他资源要长一些。
设置缓存指令为公共缓存,有效期为七日,时长单位为秒
}
}
静态资源压缩配置(优化传输速度)
http {
# 全局 Gzip 压缩配置
gzip on; # 启用 Gzip 压缩
gzip最小长度设置为1千字节;压缩操作仅针对超过1千字节的文件执行,因为较小的文件经过压缩后的效率提升不明显
压缩缓冲区设定为四个,每个大小为十六千字节;
启用 gzip 压缩功能,针对的协议标准为 HTTP 1.1 这一版本号
压缩级别设定为六,这个数值介于一至九之间,数值越大压缩效果越好,不过会占用更多的处理器资源,通常建议使用六这个数值
压缩格式包括文本普通格式, 文本样式表格式, 数据交换格式, 脚本语言格式, 文本配置格式, 配置数据格式, 配置数据广播格式, 矢量图形格式, 矢量图形广播格式
启用gzip压缩差异选项,以便向请求者标示内容已实施压缩处理
启用压缩功能针对所有经过代理的请求,包括那些通过代理发送的请求,同样应用压缩处理。
# 其他配置(如反向代理、负载均衡等)...
}
静态资源防盗链配置
server {
listen 80;
server_name example.com;
location /static/ {
root /data/;
expires 1d;
# 防盗链核心配置:仅允许指定域名引用资源
合法的来源网址设定为空,排除被拦截的域名,包含 example.com 以及所有以 example.com 结尾的网址;
if ($invalid_referer) {
返回数值 403, 当出现不合规的调用情况时, 系统会禁止相应访问, 此操作将终止请求的执行
可提供个性化图像,例如防止链接被盗用的提示画面,需要将回应403的状态码更换为
重新处理 / /static/img/禁止图片盗链.png 请求;按照最终顺序执行
}
}
}
限流配置
Nginx借助组件和组件达成限流目的,一个用于控制请求数量,另一个用于管理连接数。
求数限流(漏桶算法)
单个IP地址每秒钟最多能发送十次请求,如果发送次数超出这个数量,系统会反馈服务不可用的信息。
http {
创建一个名为one的限流池,其最大容纳数量为10,每秒钟能够处理通过10个请求,处理速率为每秒10个
对远程地址进行二进制限制区域配置为 one, 该区域大小为 10m, 每秒请求限制为 10 个, 超过则拒绝处理
server {
listen 80;
server_name example.com;
location / {
# 应用限流池one,允许突发请求数为5(超过容量时排队)
限制请求区域为区域一, 允许突发量为五, 不延迟处理
# 限流后返回的错误页面(可选)
limit_req_status 503;
通过代理服务器将请求转发至192.168.1.100地址的8080端口上
}
}
}
连接数限流
单个IP地址最多允许同时维持20个连接,每个连接允许发起最多10次请求。
http {
# 定义连接数限流池:名为conn,容量20
对每个客户端地址进行连接数限制,在 conn 区域分配 10 兆内存空间
server {
# ... 其他配置 ...
location / {
限制单个IP的连接数量为20次,通过conn参数实现
限制每个IP连接数最多为20,与限制连接数功能类似,部分版本可以实现
限制区域名为one的请求速率,突发值为五,无延迟处理;这表示需要依据请求数量进行流量控制
proxy_pass http://192.168.1.100:8080;
}
}
}
SSL 配置
server {
监听端口443,启用SSL加密,支持HTTP/2协议;
server_name example.com;
# SSL证书路径
具体路径为fullchain.pem
证书私钥文件位于路径 /etc/letsencrypt/live/example.com/privkey.pem;
# SSL优化配置
启用安全的TLS协议版本,包括TLSv1.2和TLSv1.3,同时停用那些存在安全风险的旧版本
启用服务器端加密套件优先级设置;采用服务器推荐的加密方案;
安全加密协议包括EECDH与AESGCM的组合,还有EDH与AESGCM的组合,同时包含AES256与EECDH的搭配,以及AES256和EDH的搭配,这些用于保障传输过程的安全性
会话数据共享存储,类型为SSL,最大容量为10兆字节;这是一个关于SSL会话的缓存配置
会话超时设定为一天,具体时长为一整天
ocsp数据缓存已开启,目的是为了缩短证书校验过程所需的时间
ssl_stapling_verify on;
解析器为8.8.8.8, 8.8.4.4, 有效期为300秒; # 用于域名解析
设置一个专用80端口的虚拟服务器,用于强制将HTTP流量重定向至HTTPS协议,此功能可按需启用
server {
listen 80;
server_name example.com;
返回301状态码,地址为https://当前域名请求的完整路径,实施永久跳转,将所有访问导向该指定网址。
}
# 反向代理配置(同第二部分)
location / {
proxy_pass http://192.168.1.100:8080;
proxy_set_header Host $host;
设置代理头信息时,将真实来源地址作为 X-Real-IP 字段传递,其值等于远程客户端的 IP 号码。
}
}
负载均衡配置定义负载均衡池
在nginx.conf的http块中定义后端服务器集群
http {
# 定义负载均衡池,名为backend
upstream backend {
# 后端服务器1,权重为2(权重越高,分配到的请求越多)
服务器地址192.168.1.100端口8080,权重设置为2,进行配置
后端服务器第二台,其权重设定为1,max_fails参数值为3,意味着允许三次连接尝试失败后将该服务器视为不可用状态
服务器地址为192.168.1.101,端口号是8080,权重设置为1,最大失败次数限定为3次,当服务不可用时,等待30秒后重试
后备服务器三,在其余节点无法使用时才启动,作为备用
服务器192.168.1.102上的8080端口进行数据备份工作,确保信息得到妥善保存。
}
server {
listen 80;
server_name example.com;
location / {
# 转发请求至负载均衡池
proxy_pass http://backend;
# 反向代理通用配置(同第二部分)
proxy_set_header Host $host;
设置请求头字段X-Real-IP为客户端真实IP地址;
}
}
}
常用负载均衡算法
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1