-
2022-03-15 17:23:01
# 开启|关闭 gzip。 gzip on; # 文件大于指定 size 才压缩,以 kb 为单位。 gzip_min_length 10; # 压缩级别,1-9,值越大压缩比越大,但更加占用 CPU,且压缩效率越来越低。 gzip_comp_level 4; # 压缩的文件类型。 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript; # 是否添加响应头 Vary: Accept-Encoding 建议开启。 gzip_vary on; # 请求压缩的缓冲区数量和大小,以 4k 为单位,32 为倍数。 gzip_buffers 32 4K;
更多相关内容 -
四、nginx静态文件的配置
2022-04-17 18:42:191. 根据上节内容的提示,我们知道如何进行nginx的信号控制和命令行控制了。 2. 这节主要是学习nginx的静态文件相关配置,包括静态html和vue等项目工程文件1. 根据上节内容的提示,我们知道如何进行nginx的信号控制和命令行控制了。
2. 这节主要是学习nginx的静态文件、缓存、静态文件压缩等相关内容。
一、 配置并访问nginx静态文件
1.1 root配置nginx静态文件地址
在nginx.conf 配置文件中默认使用root配置了nginx静态界面地址
规则: root配置的路径+location路径为访问的路径。
路径规则:
①相对路径: 上图所示的为相对路径,即nginx的prefix路径(/usr/local/nginx)+html路径,也就是nginx启动时的相对路径。
②绝对路径: 如果配置和上图中一样的路径,则需要改为: root /usr/local/nginx/html。
注: window系统配置则需要加上双引号 eg: "F:/html/html";
1.2 alias配置静态文件地址
若使用alias配置上述路径改如何配置呢?改为下述配置即可:
# eg:1 location /html { alias /usr/local/nginx/html; index index.html index.htm; } # eg:2 location /html/ { alias /usr/local/nginx/html/; index index.html index.htm; }
上文中我用了两个例子,首先alias配置和root区别之一便是 location匹配的路径需要和实际路径后面那节一样。 (root是 root路径+location路径)
第二个区别就是,root会忽视路径最后面的 / 但是alias必须两个同时存在或同时不存在即可
二、 配置并访问vue项目文件
2.1 使用root配置vue项目地址
# 1. 一般使用根路径配置前端 location / { root /data/webroot/html/xxx/dist; index index.html index.htm; }
2.2 使用alias配置vue项目地址
# 1. 一般使用根路径配置前端 location /dist { alias /data/webroot/html/xxx/dist; index index.html index.htm; }
那么我们进行访问的时候会发现报错如下图所示:
此时主要是因为配置vue项目的地址是使用的相对路径,也就是路径没有/dist导致的,故需要在dist目录下的index.html统一添加前缀即可:
下图为正常访问的情况:
三、 nginx静态文件优化配置
http{ #提高文件的传输效率 sendfile on; # tcp_nopush on; # tcp_nodelay on; }
3.1 sendfile,用来开启高效的文件传输模式
值 释义 on 开启 eg: sendfile: on; off 关闭 (默认值)。eg: sendfile: off; 注:① sendfile默认是关闭的。
② 在默认情况下,静态文件请求会进行linux内存将文件从磁盘拷贝到缓冲区、然后再将缓冲区的文件通过进程应用拷贝到sokect缓冲区进行返回。
③ 开启时,则会直接由linux内核拷贝到sokect缓冲区提供,大大节约了io的次数。
④ 在http server location均可以进行开启。
3.2 tcp_nopush:提升网络包的传输'效率(sendfile 开启)
值 释义 on 开启 eg: tcp_nopush: on; off 关闭 (默认值)。eg: tcp_nopush: off; 注: 这个开启,则保证了文件不会零散的发送出去(减少了io次数),一次性发送对于整个网络有很大的优化提升。
3.3 tcp_nodelay:提高网络包传输的'实时性(keep-alive连接开启)
值 释义 on 开启 eg: tcp_nodelay: on; off 关闭 (默认值)。eg: tcp_nodelay: off; 注:① 这个开启,会保证数据包(静态文件会分成很多数据包)存在的时候直接进行发送。
② 看上去这个和3.2 tcp_nopush 是互斥的,但是在linux内核2.5.9之后处理逻辑是先保证3.2 tcp_nopush填满,当文件
-
django收集静态文件
2022-02-07 15:21:44STATIC_ROOT 的路径设置为你的静态文件存放地址 STATICFILES_DIRS = [] STATIC_URL = '/static/' # 线上收集静态文件的目录 STATIC_ROOT = os.path.join(BASE_DIR,'statics') 静态文件相关配置介绍 官网地址 ...部署
-
STATIC_ROOT 的路径设置为你的静态文件存放地址
STATICFILES_DIRS = [] STATIC_URL = '/static/' # 线上收集静态文件的目录 STATIC_ROOT = os.path.join(BASE_DIR,'statics')
静态文件相关配置介绍
-
运行
collectstatic
管理命令命令python manage.py collectstatic
这将会把静态目录下的所有文件拷贝至 STATIC_ROOT 目录。
-
使用
nginx
提供静态文件服务
nginx中静态文件路径location /static/{ root /var/项目目录/; try_files $uri @django; }
当静态文件发生变化时
第一次部署项目后发现,admin的页面没有样式,执行
collectstatic
命令
如果后续静态文件再次发生变化(如:使用接口文档的插件,在线文档无样式),需再次执行collectstatic
命令 -
-
golang:打包静态文件
2020-03-12 17:10:34但是,Go在编译成二进制文件时并没有把我们的静态资源文件编译进去,如果我们开发的是web应用的话就需要想办法把我们的静态文件也编译进去。 本文收集了一些Go语言中用来在编译过程中将静态文件打包到编译文件的...对于 Go 语言开发者来说,在享受语言便利性的同时,最终编译的单一可执行文件也是我们所热衷的。
但是,Go在编译成二进制文件时并没有把我们的静态资源文件编译进去,如果我们开发的是web应用的话就需要想办法把我们的静态文件也编译进去。
本文收集了一些Go语言中用来在编译过程中将静态文件打包到编译文件的方法。
go-bindata
在 Go 语言的 Awesome 中你可以看到很多静态打包库,但是,你却看不到 go-bindata, go-bindata 明显更受欢迎,更流行。
go-bindata 很简单,设计理念也不难理解。它的任务就是讲静态文件封装在一个 Go 语言的 Source Code 里面,然后提供一个统一的接口,你通过这个接口传入文件路径,它将给你返回对应路径的文件数据。这也就是说它不在乎你的文件是字符型的文件还是字节型的,你自己处理,它只管包装。
简单来说就是它可以把我们的静态文件生成 .go 文件,这样就可以编译成二进制文件,项目启动的时候再把这个 .go 文件再释放成静态文件
下载
go get -u github.com/jteeuwen/go-bindata/...
安装确认
C:\Users\Administrator\Desktop>go-bindata -version go-bindata 3.1.0 (Go runtime go1.14). Copyright (c) 2010-2013, Jim Teeuwen.
注意: GOPATH必须在环境变量下
使用
例子一
ConfigTest ├── asset │ └── asset.go 静态文件编译之后的go文件 ├── cli # 运行目录 ├── config # 配置文件目录 │ ├── config.json │ └── config.yaml └── main # 程序目录 └── main.go # 源码
config.yaml内容
enabled: true path: aaaaa id: 10
config.json内容
{ "enabled": true, "path": "xxxx", "id": 111 }
执行命令将静态文件打包成go文件
go-bindata -o=./asset/asset.go -pkg=asset config/...
-o 输出文件到 ./asset/asset.go
包名 -pkg=asset
config/… # 指定需要打包的静态文件路径, …包括所有子目录// 可以参考:https://www.cnblogs.com/landv/p/11577213.html
其路径变为:
ConfigTest ├── asset │ └── asset.go 静态文件编译之后的go文件 ├── cli # 运行目录 ├── config # 配置文件目录 │ ├── config.json │ └── config.yaml └── main # 程序目录 └── main.go # 源码
main.go
package main import ( "configTest/asset" "encoding/json" "fmt" "gopkg.in/yaml.v2" "log" "os" "path/filepath" ) type conf struct { Enabled bool Path string ID int } func (c *conf) ReadYaml() { data, _ := asset.Asset("config/config.yaml") err := yaml.Unmarshal(data, &c) if err != nil { log.Fatalf("Unmarshal: %v", err) } } func (c *conf) ReadJson() { data, _ := asset.Asset("config/config.json") err := json.Unmarshal(data, &c) if err != nil { log.Fatalf("Unmarshal: %v", err) } } // 将dir解压到当前目录:根据生成的.go文件,将其解压为当前文件 func restore() { // 可以参考:https://www.cnblogs.com/landv/p/11577213.html dirs := []string{"config"} // 设置需要释放的目录 isSuccess := true for _, dir := range dirs { // 解压dir目录到当前目录 if err := asset.RestoreAssets("./", dir); err != nil { isSuccess = false break } } if !isSuccess { for _, dir := range dirs { os.RemoveAll(filepath.Join("./", dir)) } } } func main() { var c, j conf j.ReadJson() fmt.Println("json:", j) c.ReadYaml() fmt.Println("yaml:", c) fmt.Println("释放静态文件") restore() }
- 编译 main.go 执行二进制文件
cd cli && go build ../main/main.go ./main
json: {true xxxx 111}
yaml: {true aaaaa 10}
释放静态文件执行之后会自动解压出config目录以及下面的静态文件
ConfigTest ├── asset │ └── asset.go 静态文件编译之后的go文件 ├── cli # 运行目录 │ ├── config # 调用了restore()会生成这个文件 │ │ ├── config.json │ │ └── config.yaml │ └── main # main.go编译之后生成的二进制执行文件 ├── config # 配置文件目录 │ ├── config.json │ └── config.yaml └── main # 程序目录 └── main.go # 源码
main.go
http.FileSystem是定义HTTP静态文件服务的接口。go-bindata的第三方包,go-bindata-assetfs实现了这个接口,支持http访问静态文件目录的行为。package main import ( "configTest/asset" assetfs "github.com/elazarl/go-bindata-assetfs" "net/http" ) func myhttp() { fs := assetfs.AssetFS{ Asset: asset.Asset, AssetDir: asset.AssetDir, AssetInfo: asset.AssetInfo, } http.Handle("/", http.FileServer(&fs)) http.ListenAndServe(":12345", nil) } func main() { myhttp() }
访问
http://localhost:12345
,就可以看到嵌入的静态资源目录的内容了
和 Nginx 查看静态文件目录一样的。例子二
- 目录
ConfigTest ├── asset │ └── asset.go 静态文件编译之后的go文件 ├── cli # 运行目录 ├── config # 配置文件目录 │ ├── config.html └── main # 程序目录 └── main.go # 源码
- config.html内容
<html> <body> <h1>My First Heading</h1> <p>My first paragraph.</p> </body> </html>
- 打包命令:生成./asset/asset.go
go-bindata -o=./asset/asset.go -pkg=asset config/...
- main内容:
package main import ( "configTest/asset" "fmt" assetfs "github.com/elazarl/go-bindata-assetfs" "github.com/gin-contrib/multitemplate" "github.com/gin-gonic/gin" "html/template" ) func main() { fs := assetfs.AssetFS{ Asset: asset.Asset, AssetDir: asset.AssetDir, AssetInfo: asset.AssetInfo, } router := gin.Default() router.StaticFS("/static", &fs) r := multitemplate.New() bytes, err := asset.Asset("config/config.html") // 根据地址获取对应内容 if err != nil { fmt.Println(err) return } t, err := template.New("index").Parse(string(bytes)) // 比如用于模板处理 r.Add("index", t) router.HTMLRender = r router.GET("/image", func(c *gin.Context) { c.HTML(200, "index", gin.H{}) }) router.Run(":12345") }
go.rice【不好用】
go.rice
也支持打包静态文件到go
文件中,但是行为和go-bindata
很不相同。从使用角度,go.rice
其实是更便捷的静态文件操作库。打包静态文件反而是顺带的功能。安装
go get github.com/GeertJohan/go.rice/...
使用一
import ( "fmt" "html/template" "github.com/GeertJohan/go.rice" ) func main() { // 这里写相对于的执行文件的地址 box, err := rice.FindBox("theme/default") if err != nil { println(err.Error()) return } // 从目录 Box 读取文件 str, err := box.String("post.html") if err != nil { println(err.Error()) return } t, err := template.New("tpl").Parse(str) fmt.Println(t, err) }
使用二
go.rice 是直接支持 http.FileSystem 接口:
package main import ( "github.com/GeertJohan/go.rice" "net/http" ) func main() { http.Handle("/", http.FileServer(rice.MustFindBox("../config").HTTPBox())) http.ListenAndServe(":12345", nil) }
有点略繁琐的是 rice.FindBox(dir) 只能加载一个目录。因此需要多个目录的场景,会有代码:
func main() { http.Handle("/img", http.FileServer(rice.MustFindBox("static/img").HTTPBox())) http.Handle("/css", http.FileServer(rice.MustFindBox("static/css").HTTPBox())) http.Handle("/js", http.FileServer(rice.MustFindBox("static/js").HTTPBox())) http.ListenAndServe(":12345", nil) }
esc
esc 的作者在研究几款嵌入静态资源的 工具 后,发觉都不好用,就自己写出了 esc。它的需求很简单,就是嵌入静态资源 和 支持 http.FileSystem 。esc 工具也这两个主要功能。
安装
go get github.com/mjibson/esc
使用
使用方法和 go-bindata 类似:
// 注意 esc 不支持 source/... 三个点表示所有子目录 go-bindata -o=asset/asset.go -pkg=asset source theme doc/source doc/theme
import ( "net/http" "asset" // esc 生成 asset/asset.go ) func main() { fmt.Println(asset.FSString(false, "/theme/default/post.html")) // 读取单个文件 http.ListenAndServe(":12345", http.FileServer(asset.FS(false))) // 支持 http.FileSystem,但是没有做展示目录的支持 }
esc 有个较大的问题是只能一个一个文件操作,不能文件夹操作,没有类似 go-bindata 的 asset.RestoreDir() 方法。并且没有方法可以列出嵌入的文件的列表,导致也无法一个一个文件操作,除非自己写死。这是我不使用他的最大原因。
go generate
嵌入静态资源的工具推荐配合 go generate 使用
-
nginx-静态文件服务详解
2020-10-10 11:38:01Nginx 静态文件服务 我们先来看看最简单的本地静态文件服务配置示例: server { listen 80; server_name www.test.com; charset utf-8; root /data/www.test.com; index index.html index.htm; } 就... -
打包生成静态文件
2021-10-21 18:04:261.停掉发者服务器 2.npm run build -
Flask 展示静态文件
2019-07-11 16:49:31Flask获取静态文件功能的使用方法介绍。 -
express托管静态文件
2021-03-25 10:11:45app.js文件内容 const express = require('...// 利用 Express 托管静态文件 app.use(express.static('public')) app.listen(port, () => { console.log(`Example app listening at http://localhost:${po... -
nginx访问静态文件
2020-08-26 13:49:231. 访问一个文件 server { listen 80; server_name file.one.cn; access_log /Users/xiaoming/Documents/nginxlog/file.log main; error_log /Users/xiaoming/Documents/nginxlog/file-error.log debug_http; ... -
Nginx的location使用别名方式配置静态文件
2021-12-15 15:32:56Nginx的location使用别名方式配置静态文件 官方root配置 Sets the root directory for requests. For example, with the following configuration location /i/ { root /data/w3; } The /data/w3/i/top.gif file ... -
Netty 入门案例之静态文件服务器实现
2020-08-08 13:52:46Netty 入门案例之静态文件服务器实现 最近用Netty实现了一个类似于Nginx的静态文件服务器功能。遂在个人博客中记录下过程 设计阶段 功能设计 支持自定义配置文件(提供默认配置文件和外部配置文件两种方式) 支持... -
什么是静态文件
2020-07-16 13:56:34静态文件通常是指不是由服务器生成的文件,例如脚本,CSS文件,图像等,但是必须在请求时发送给浏览器。 例如: 如果node.js是您的Web服务器,则默认情况下它不提供任何静态文件,您必须对其进行配置以提供您希望其... -
nginx添加伪静态文件
2022-03-15 10:11:32location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; } } -
linux系统下nginx配置静态文件访问
2022-04-03 13:08:12假设在linux系统上你想要访问的文件放在/usr/view/文件夹下: 那么你在server下配置: location /view/ { root /usr/; autoindex on; } 或者 location /view/ { alias /usr/view/; autoindex on; } 然后访问... -
nginx静态文件目录如何增加鉴权
2022-01-25 16:47:42安装crytp加密 ... 我们可以使用来自 Apache 的 htpasswd 工具来创建密码文件 debain安装 sudo apt update sudo apt install apache2-utils ...密码生成命令格式:htpasswd -c 存放用户名密码的文件...配置文件 upstrea -
前端下载静态文件及动态文件
2019-06-14 16:20:01前端下载静态文件及动态文件静态文件动态文件前端后端 静态文件 <a href="doc/use_document.pdf" download="使用文档.pdf"><Button type="primary" icon="ios-download-outline" style="margin-right:10px;... -
Django中的静态文件、路径、访问静态文件的方法
2020-01-15 19:56:34什么是静态文件 不能与服务器端做动态交互的文件都是静态文件 如:图片,css,js,音频,视频,html文件(部分) 静态文件配置 在 settings.py 中配置一下两项内容: 配置静态文件的访问路径 通过哪个url地址找静态... -
django项目收集静态文件
2019-06-11 00:32:24导出Django项目静态文件和导出包文件 -
nginx静态文件缓存
2018-05-24 16:29:05nginx的一大功能就是完成静态资源的分离部署,减轻后端服务器的压力,如果给这些静态资源再加一级nginx的缓存,可以进一步提升访问效率。第一步:添加nginx.conf的http级别的缓存配置##cache## proxy_connect_time... -
Vue3.0静态文件存放路径与引用
2021-10-24 08:17:39一般项目的静态文件都放到static文件夹中,在3.0版本中static文件夹不能与src文件同级,一般都需要放在public文件目录下,引用路径也不太相同 例如 2.0直接放到static文件中那么路径为 /static/img/headbg05.jpg... -
【Flask】总结静态文件及渲染模板的使用
2021-11-22 16:13:35静态文件 动态的 web 应用同样需要静态文件。 CSS 和 JavaScript 文件通常来源于此。 理想情况下,你的 web 服务器已经配置好为它们服务,然而在开发过程中 Flask 就能够做到。只要在你的包中或模块旁边创建一个名为... -
springboot配置静态文件及获取静态资源路径【详细教程】
2020-10-22 15:11:10第一、先设置springboot项目 静态资源访问地址: spring: mvc: static-path-pattern: /static/** 第二、读取静态资源地址: String path = ClassUtils.getDefaultClassLoader().getResource("").getPath();... -
.Net Core 5 WebApi 项目下静态文件展示
2021-01-01 16:53:03是因为api默认是不支持静态文件的 需要在Startup中添加如下配置才能做到 这个是添加自定义目录的,亲测有效 app.UseStaticFiles(); //自定义目录 string filepath = System.IO.Path.Combine(AppDomain.... -
nginx静态文件双节点,静态文件发送post请求报405
2019-10-10 08:33:10nginx静态文件双节点思想113nginx112nginx 思想 nginx跳转到另一个nginx 两台服务器113和112都装有nginx,113为入口,分别配置113和112双节点静态文件 113nginx server { listen 80; server_name xxxx; access_... -
vue项目打包上传后报404找不到静态文件
2022-03-30 10:35:54文章目录一、vue项目打包上传后报404找不到静态文件二、解决办法 一、vue项目打包上传后报404找不到静态文件 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、解决办法 在项目... -
vue完成项目后,打包成静态文件的方法
2021-06-12 15:40:44这篇文章主要为大家详细介绍了vue完成项目后,打包成静态文件的方法,具有一定的参考价值,可以用来参考一下。感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!vue完成项目后,如何打包成静态文件,并且用... -
nginx反向代理及静态文件缓存
2019-07-17 14:20:43nginx 静态文件缓存 proxy_cache_path /cache levels=1:2 keys_zone=cache:10m max_size=10g inactive=60m use_temp_path=off; server{ listen 80; server_name proxya.com; location / { proxy_pass ... -
nginx 静态文件目录配置
2019-02-12 20:58:31实际开发/测试/线上环境中,我们可能会经常遇到nginx的静态文件配置。 1. css,js,img等文件的静态文件目录配置 我们通常会需要配置(有可能是cdn回源,也有可能是直接访问),访问域名m.static以.css/gif/ico..... -
nginx静态文件访问
2018-06-20 11:04:56nginx之访问静态文件 如何配置nginx,访问服务器上的静态文件? 1、在目录/data/interface_test下创建静态文件queryAppData.json,内容如下: 如何访问该文件呢? 2、修改/usr/local/nginx/conf/nginx.conf... -
Spring Gateway静态文件路由
2019-09-10 18:26:56Spring Gateway静态文件路由Spring gateway路由简介其他微服务的API路由静态文件服务静态文件的路由配置静态文件的cache设置小结 Spring gateway路由简介 Spring zuul及路由表的配置 其他微服务的API路由 静态文件...