nginx(二) の 配置静态资源网站

首先在开始配置前,要想明白,nginx 配置 静态资源 服务时基本逻辑,其实就是要 将路由地址与服务器中文件真实的存储地址进行映射

配置静态资源样例

  • 配置前,首先要将当前配置文件的路径,写入到 nginx.conf 的配置文件中。

  • 每一个 server 就是一个服务,服务的独立定义就是 域名+端口

server {
    listen 82; # 端口号
    server_name localhost; # 访问域名
    location / {
        root /home/peng/nginx/resource/myht5;
        index index.html;
    }
}

# 每一个 server 就是不同的服务,不同的 【域名+ 端口号】 就是不同的服务
server {
    listen 83;
    # 访问的域名
    server_name localhost;
    location /myht5 {
        # 服务器上的文件夹地址,实际存储文件是拼接而来的 【root + location】
        # 此处进行拼接时,应该注意;一个 / 应该在 location 的前面,而不是 root 的后面
        root /home/peng/nginx/resource;
        index index.html index2.html; # 关于 index ,后面有详解。
    }

   
   # 使用 alias 关键值,直接把地址信息毫不相关的 路由地址与文件存储地址进行映射。一步到位,不需要再进行地址的拼接转换。
    location /static {
        alias /home/peng/nginx/resource/myht5;
        index index02.html;
    }   
}

location 中的 index 配置

参考文献https://blog.csdn.net/qq_32331073/article/details/81945134

开启 gzip ,提高传输效率

Nginx实现资源压缩的原理是通过 ngx_http_gzip_module 模块拦截请求,并对需要做 gzip 的类型做gzip。ngx_http_gzip_module 是Nginx默认集成的,不需要重新编译,直接开启即可。

  # 是否开始压缩支持
  gzip on;
  # 指定压缩的级别,(压缩比越大,文件压缩效果越好,,但是对cpu负载也会越来越大,而且压缩越来越慢)
  # 压缩比一般达到 6 以后,不会再有太大的提高。
  gzip_comp_level 6;
  # 此处是指 内存分页的大小是 4k,申请的是 16 倍的内存空间,一般此选项默认不设置。
  # gzip_buffers 16 4k;
  # 当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩。
  gzip_min_length 20;
  # 用于识别http协议的版本,早期的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项。默认在http/1.0的协议下不开启gzip压缩。
  gzip_http_version 1.1;
  # 支持的压缩类型;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/jpeg;

查考文献https://www.cnblogs.com/xzkzzz/p/9224358.html

路由的匹配规则

  • location = /uri: 精确匹配,完全匹配的上才能生效。
  • location ^~ /uri: 前缀匹配,只要匹配上了,就不再继续进行正则匹配。
  • location ~ pattern: 正则匹配,区分大小写
  • location ~* pattern: 正则匹配,不区分大小
  • location /uri:前缀匹配,但是以正则匹配优先
  • location /: 通用匹配,默认匹配到所有的匹配规则。相当于switch中的default

前缀匹配,如果有包含关系时,按最大匹配原则进行匹配。比如在前缀匹配: location /dir01 与 location /dir01/dir02 ,如有请求 http://localhost/dir01/dir02/file 将最终匹配到 location /dir01/dir02

具体更详细的操作,可以查看如下:参考文献https://blog.csdn.net/bigtree_3721/article/details/106105924

配置防盗链

盗链指的是在自己的界面展示非本服务器上的内容,通过技术手段获得其他服务器的资源。绕过他人资源展示页面,在自己页面向用户提供此内容,从而减轻自己服务器的负担,因为真实的空间和流量来自其他服务器。

server {
    listen 83;
    # 访问的域名
    server_name localhost;

    # 配置防盗链,防止有人盗取图片后者视频
    location ^~ /images {
        root /home/peng/nginx/resource;
        # 定义白名单;
        # 1. none代表请求头中没有referer信息,这一般是直接在浏览器输入图片网址;
        # 2. blocked代表被防火墙过滤标记过的请求。如果访问来源不在白名单内,则返回403错误
        valid_referers none blocked *.vm.ser.cn;
        # invalid_referer 是 内置变量,通过判断上一行中的valid_referers值会返回0或者1
        if ($invalid_referer) {
            return 403;
            break;
        }
        index cat.jpg;
    }
}

查考文献:https://www.qycn.com/xzx/article/17823.html

放到链的原理是:

当浏览器向web服务器发送请求的时候,一般都会带上Referer,来告诉浏览器该网页是从哪个页面链接过来的;后台服务器根据获取到的这个Referer信息,从而判断是否为自己信任的网站地址,如果是则放行继续访问,如果不是则可以返回403(服务端拒绝访问)的状态信息)

nginx 代理服务 proxy_pass 用法

proxy_pass 代理指令,有很多的匹配规则,其实说到底就两种情况

  1. url 只有 host:例如 http://hosthttp://host:port

  2. url 中包含路径,哪怕只有一个 /,例如 : https://host:port/

具体情况的分的比较多,具体参考下面两篇文献.
参考文献

posted @ 2023-02-18 14:24  沧海一声笑rush  阅读(423)  评论(0编辑  收藏  举报