配置 Nginx
Nginx 是一种轻量级、高性能、低内存的 Web 服务器和反向代理服务器。
1. 正向代理和反向代理
正向代理:客户端向服务器发送请求,并指定目标服务器地址,然后由代理服务器和原始服务器通信,转交请求并获得响应,再返回给客户端。正向代理隐藏了真实的客户端,使真实的客户端对服务器不可见。

反向代理:以代理服务器来接收互联网上的连接请求,然后将连接请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给客户端。此时的代理服务器对外就表现为一个反向代理服务器。

2. 配置 Nginx
Mac 系统可以借助 brew 安装 Nginx。brew install nginx,安装成功后,配置文件在 /usr/local/etc/nginx 目录下。
Windows 系统可以在官网 下载 nginx。

解压缩后,配置文件在 \conf 目录下。移除掉部分被注释掉的代码(前面添加了 # 的那行代码)后,默认配置如下:
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #access_log  logs/access.log  main;
    sendfile        on; # 设置为 on 时,Nginx 会使用 sendfile() 系统调用来传输静态文件
    #tcp_nopush     on;
    keepalive_timeout  65; # 当这个超时 65s 到达时,如果连接上没有新的数据传输,Nginx 会关闭这个连接。
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
events 和 http 在最外层,server 在 http 中,location 在 server 中。server 和 location 都可以有多个配置,多个 server 代表多个服务,location 代表多个匹配规则。
该 server 监听了 80 端口,location 指定与请求中的 URI 的 "/" 前缀相匹配。例如请求 http://localhost/80 那么 nginx 会映射到 html/index.html 文件。
3. 配置反向代理
在前端开发中经常需要配置反向代理,已解决跨域问题。修改上面配置:
location / {
  proxy_pass https://www.baidu.com
}
这样访问页面就代理到百度了。
如果部署的服务是内网地址,如:192.168.0.110:10086,那么该如何配置。需要使用 upstream,它用来定义一组服务器,这些服务器可以监听不同的端口:
upstream backend-servers {
  server 192.168.0.110:10086
  server 192.168.0.111:10087  # 配置多个服务器
}
这时,location 要改成:
location / {
  proxy_pass http://backend-servers
}
4. 开启 gzip 压缩
gzip 是一种常用的网页压缩技术,通过 gzip 压缩之后,体积通常变为原来的一半甚至更小,节省带宽和提升传输速度。网络请求头中需要包含:Accept-Encoding: gzip 表示期望通过 gzip 压缩。
nginx 将经过 gzip 压缩过后的文件给浏览器并在响应头重添加:content-encoding: gzip,告诉浏览器自己采用的压缩算法是 gzip。
gzip on;  # 默认 off,on 表示开启 gzip
gzip_types text/plain text/csss application/json text/xml text/javascript  # gzip_types 表示要采用 gzip 压缩的 MIME 文件类型
5. 图片防盗配置
由于图片可以跨域访问,所以当图片被其他网站引用时,无形中增加了自家服务器负担。
server {
  # 图片防盗链
  location ~* \.(png|jpeg|jpg|gif)$ {
    valid_referers none blocked erver_names ~\.test\. ~\.test2\. *.qq.com;
    if ($invalid_referer) {
      return 403;
    }
  }
}
过滤请求:
# 如果是非指定请求,全返回 403
if ($request_method !~ ^(GET|POST|HEAD)$) {
  return 403;
}
location / {
  # IP 地址访问限制(只允许 192.168.0.110 的机器访问)
  allow 192.168.0.110
  deny all;
}

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号