本文会帮你解答一个问题,nginx 这玩意儿是干嘛的

Nginx 是啥,官方说法,一种高性能的 http 与反向代理的 web 服务器。什么叫高性能?说白了就是响应尽可能地快。
一般的项目后端配置 tomcat 即可满足需求,因为一个站点在某个时刻不可能会有大量的请求达到。tomcat 最高同时能够满足 5、600 的请求响应,所以说一般场景下基本 hold 住。但是总有些热门的站点。在某一时刻会有数以万计的请求,这个时候,tomcat 就扛不住了,服务器直接飘红。为了解决这一问题,nginx 就来了(最大支持 50000 请求)。
nginx

反向代理、负载均衡、动静分离、打包预览

反向代理

先说明什么是正向代理。玩吃鸡这类游戏的时候,我们往往要挂个加速器(vpn),不然就很慢。关于为什么慢甚至无法访问,请移步”梯子”那篇文章。这里的加速器,就是正向代理,开启代理,我们触发的任何请求均是由加速器代替我们的客户端发出去的。即:代理客户端就是正向代理
而反向代理的典型就是 nginx。当客户端的请求发送给服务端的时候,实际上被 nginx 拦截,代替服务端返回响应。即:代理服务端就叫做反向代理。两者的效果是一样的,就是在 c 端和 s 端之间加了一层。实际的操作区别在于,一个装在 c 端一个跑在 s 端,如此而已。同一个站点的服务器,往往不会是一台,可能会有很多台。通过 nginx 这层中间层,即可实现高性能的需求。顺带说一句,从架构的层面来做考量,没有什么,是加一层中间层解决不了的。如果有,那就再加一层。

负载均衡

上面实际已经提到了。某个时刻发送了 4 个请求,如果此时只有一台服务器,那么这四个请求会被这台服务器挨个处理,挨个儿响应,假设一个请求耗时 N,总耗时就是 4N。那么如果此时服务器端有四台服务器,四个请求被四台服务器同时处理并返回,耗时为 N。这就叫负载均衡。注意,默认情况下是通过轮询的方式把四个请求依次给到四台服务器。但是我们也可以通过“weight”权重关键字灵活配置,也就是所谓的加权轮询。

动静分离

实际就是其字面意义。不赘述。

// 常用命令:
开启nginx
start nginx

关闭nginx,快速停止nginx,可能并不保存相关信息
nginx -s stop

重新载入nginx,当配置信息修改需要重新加载配置是使用
nginx -s reload

打包预览

抛开自动化部署的项目不谈,有时候我们会碰到一些还是刀耕火种般的项目。就是前端手动打个包,发给后端去部署。这时候,可能会遇到一个场景:本地开发好好的,打完包扔给后端,后端部署完,自己去看线上的项目懵逼了。尼玛本地好好的,线上怎么出问题了?这边央视怎么不对了?glb 的模型怎么加载不出来了?等等。

为了解决上述问题,你首先要做的应该是在本地复现。因为你不可能每次实验的修改,都扔给后端的同学部署,太麻烦。
此时,就到了nginx出场的时候了。
我们可以利用 nginx 在本地做个代理,使用打包后的产物,模拟后端部署。主要就是他的 config 配置 文件。基本配置如下:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        // # 在 location / 之前添加,优先匹配 /models/ 路径
        // location ^~ /models/ {
        //     alias D:/nginx-1.26.3/html/dist/models/;
        //     add_header Content-Type model/gltf-binary;
        // }
        # 前端静态文件配置
        location / {
            root   html/dist;  # 指向你的打包目录
            index  index.html;
            try_files $uri $uri/ /index.html;  # 单页应用路由支持
        }

        # 如果需要代理API接口
        location /api/ {
            proxy_pass http://192.168.0.7:15006;  # 替换为你的真实API地址
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }


        # 错误页面配置
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

对于前端同学们而言,上面的内容中,除了打包预览比较实用,其他的嘛,听个响足矣,知道这个东西干嘛用的。需要的时候,找找相关配置即可。毕竟,大家各司其职。