我们已经准备好了,你呢?

2026我们与您携手共赢,为您的企业形象保驾护航!

前言

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地址;
        }
    }
}

常用负载均衡算法

二维码
扫一扫在手机端查看

本文链接:https://www.by928.com/11881.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线