前端开发者必备的Nginx知识

前言

Nginx 是一款轻量级且高性能的 HTTP 服务器和反向代理服务器,它在处理静态资源、负载均衡、反向代理等方面表现出色,非常适合作为前端项目的服务器。作为一名前端开发者,了解和掌握 Nginx 的基本配置和优化技巧是非常有必要的。

Nginx 基本概念

什么是 Nginx?

Nginx 是一个高性能的 HTTP 和反向代理服务器,它以占用内存少、并发能力强而闻名。Nginx 专为性能优化而设计,能够承受高负载,支持高达数万个并发连接。

正向代理与反向代理

  • 正向代理:客户端通过代理服务器访问目标服务器,目标服务器不知道实际的客户端身份。
  • 反向代理:客户端直接与代理服务器通信,代理服务器再将请求转发给目标服务器,目标服务器认为请求来自代理服务器。

Nginx 安装与配置

安装 Nginx

在 Linux 系统中,可以通过包管理器安装 Nginx。例如,在 CentOS 上可以使用以下命令:

sudo yum install nginx

基本配置文件结构

Nginx 的配置文件通常位于 /etc/nginx/nginx.conf,其基本结构包括全局块、events 块、http 块、server 块和 location 块。

  • 全局块:配置影响 Nginx 服务器整体运行的指令,如工作进程数。
  • events 块:配置网络连接的相关参数,如每个进程的最大连接数。
  • http 块:配置服务器的参数,如文件引入、日志定义、MIME-TYPE 定义等。
  • server 块:配置虚拟主机的相关参数,如监听端口、服务器名称。
  • location 块:配置请求的匹配和处理规则。

基本配置示例

    user nginx; # nginx进行运行的用户
    error_log /var/log/nginx/error.log; # 错误日志

    http {
        log_format main ...; # nginx日志格式
        access_log /var/log/nginx/access.log main; # 日志位置
        
        # 引入的nginx配置文件,可以将server放在该目录下,方便管理
        include /etc/nginx/conf.d/*.conf; 
        # 一个nginx服务一个server
        server {
            listen 80; # 服务启动的端口
            server_name _; # 服务域名或IP
            root /usr/share/nginx/html; # 服务指向的文件地址
            
            error_page 404 /404.html; # 找不到资源重定向到404页面
            location = /40x.html {};
            
            error_page 500 502 503 504 /50x.html; # 系统错误重定向50x页面
            location = /50x.html {};
        }
        # server {
        #    listen 443; # 支持https协议
        #    server_name _;
        #    root /usr/share/nginx/html;
        #    ...
        # }
    }

启动服务与查看运行状态

 # 启动nginx
systemctl start nginx
# 查看nginx运行状态
systemctl status nginx

Nginx 性能优化

开启 gzip 压缩

http {
       # 开启关闭
        gzip on;
        # 压缩的文件类型
        gzip_types text/plain text/css application/javascript;
        # 过小的文件没必要压缩
        gzip_min_length 1000; # 单位Byte
        gzip_comp_level 5; # 压缩比,默认1,范围时1-9,值越大压缩比最大,但处理最慢,所以设置5左右比较合理。
 }

静态资源缓存

location ~* \.(jpg|jpeg|png|gif|ico|css|js|swf|flv|mp3|txt)$ { 
    #匹配到的资源有效期设置为30天;
    expires 30d; 
    access_log off; 
}

反向代理配置

代理的时候要注意添加必要的参数,帮助后端获取一些客户端的请求数据

  • proxy_set_header Host $host:客户端请求的主机名(Host),不加的话,后端无法获取主机名信息

  • proxy_set_header X-Real-IP $remote_addr:用户的真实IP(X-Real-IP),如果不设置,后端只能拿到代理服务器的IP

  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for代理链路,如果用户中间经过了多个代理服务器,如果不加这个参数,那么后端服务将无法获取用户的真实来源

location /api/ { 
    proxy_pass http://backend-server; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto $scheme; 
}

处理前端路由的 404 问题

增加一行try_files配置,当请求的地址找不到时,重新指向index.html文件

 server { 
        listen 80; 
        server_name localhost; 
        root /data/www/; 
        
        location / { 
            try_files $uri $uri/ /index.html; 
            index index.html; 
        } 
    }

安全优化

  • 禁止访问敏感目录
  • 设置合理的 HTTP 头部
  • 使用 HTTPS

监控 Nginx 状态

可以通过安装 ngx_http_stub_status_module 模块来监控 Nginx 的性能状态。

总结

Nginx 是前端项目部署的重要工具,掌握其基本的配置和优化技巧对于前端开发者来说非常重要。通过合理配置,可以显著提高网站的加载速度和性能,同时也能增强网站的安全性。希望这篇文章能帮助你更好地理解和使用 Nginx。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吕彬-前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值