写点什么

Nginx 基础配置 - 基础模块配置

用户头像
梁龙先森
关注
发布于: 2021 年 05 月 06 日
Nginx基础配置-基础模块配置

Nginx 可以用于作为静态资源服务器反向代理服务,以及,在微服务体系下,也可被作为网关来使用,配合 Lua 做限流、熔断等。我们平常通常使用它作为静态资源服务器或者 http 请求转发器,把静态文件的请求直接返回静态文件资源,把动态的请求转发给后台处理程序,如 tomcat 等。它具备如下的特点:

  • 性能好,占用很少的系统资源,支持更多的并发连接

  • 支持热部署

  • 扩展性好、可靠性强

  • 它是开源


现在看看如何玩起一个 nginx 配置。

环境搭建

本篇文章是基于 window 环境。

1.1 下载地址

Nginx下载地址

1.2 基础命令

以下脚本命令均在 nginx 安装目录下执行,如:D:t\nginx-1.19.10

  1. 启动

start nginx  # 或者nginx
复制代码
  1. 停止

nginx -s stop# 或者nginx -s quit
复制代码
  1. 重新载入

nginx -s reload
复制代码


当你启动 nginx 失败的时候,在 nginx 目录下的 logs 文件夹会产生对应的错误日志文件,可以前去查看错误日志 error.log。若是 nginx 启动端口被占用了,可在配置文件nginx-1.19.10\conf\nginx.conf修改应用启动的默认端口。

location

# 仅提供部分案例http {  server {  	 # 匹配所有请求     location / {     }     # 访问的URI是"/"时,返回html文件夹底下,匹配到的文件内容  	 location = / {     		# 指定URI访问的目录     		root html;         # httpIndex模块,该指令用来指定用来做默认文档的文件名        index index.html index.html;     }     # 配置图片请求,/html/static/img/ 为图片所在文件     location ~* \.(png|jpg|jpeg|gif)$ {     		root /html/static/img/     }     # 这里最终会访问 /www/root/html/ 目录下的资源     location ^~ /conf/ {     		alias /www/root/html/     }  }}
复制代码

上面配置使用到了 root 和 alias,这两者的区别在于如下:

  1. alias 只能处于 location 块中,而 root 则可以在 http/server/location/if 这些配置块

  2. alias 是别名的意思,指定的是 URI 请求的具体路径,而 root 则是指定 URI 路径的上级目录

  3. 使用 alias 时,目录名后面一定要用“/”,否则可能找不到文件

gzip 压缩

http {	# 开启或者关闭gzip模块 	gzip on;  # 设置压缩的页面最小字节符 	gzip_min_length  1000;  # 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流 	gzip_buffers     4 8k;     # gzip压缩比,1压缩比最小处理速度最快,9是压缩比最大处理速度最慢(传输快,但消耗内存)  gzip_comp_level 6;  # 识别http的协议版本,防止老旧客户端可能不支持gzip自解压 	gzip_http_version 1.1;   # 匹配MIME类型进行压缩,无论是否指定text/html都会被压缩 	gzip_types  text/plain application/x-javascript text/css text/html application/xml;}
复制代码

知识点补充:

  1. gzip 作用域有 http,server,location 等

  2. 二进制资源文件没必要开启压缩,因为压缩率低,比起 CPU 资源的消耗来得不划算

日志开启

http {    # 打印日志的格式,使用nginx内置变量    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';    # 日志保存位置                      access_log  logs/access.log  main;}
复制代码

补充下 nginx 变量都有哪些,方便后续配置,这些变量都存在与 nginx 的核心模块中。

  1. $remote_addr:客户端 IP 地址

  2. $remote_user:用于 HTTP 基础认证服务的用户名

  3. $time_local:访问时间

  4. $request:get 请求的 url 地址

  5. $request_body:客户端的请求体

  6. $status:请求状态码

  7. $body_bytes_sent:请求页面大小(byte)

  8. $http_referer:来源页面,请求头中的 referer

  9. $http_user_agent:浏览器的信息,版本、类型等

当然还有更多的变量,这里就不一一列举了。

总结

前端要不要懂 nginx?负载均衡?这是个争议话题,但上面三个基本入门配置,已经能够了解到客户端发起请求到 nginx,在反向代理服务器能够干啥事情了。资源缓存配置、反向代理等配置,下期更新...


参考文献:

https://www.nginx.cn/doc/standard/httpcore.html

https://www.nginx.cn/doc/standard/httpgzip.html

发布于: 2021 年 05 月 06 日阅读数: 38
用户头像

梁龙先森

关注

无情的写作机器 2018.03.17 加入

vite原理/微前端/性能监控方案...,正在来的路上... 最近太忙...

评论

发布
暂无评论
Nginx基础配置-基础模块配置