部署-->Nginx配置详解

全局配置段

  • user: 设置使用用户(worker)
  • worker_processes: 进行增大并发连接数的处理,一般和cpu核心数量保持一致
  • pid: nginx 服务启动时候 pid
  • events: 定义事件相关的属性: worker_connections:一个进程可以同时处理的连接池数量; use: 选择内核模型

http配置段

  • sendfile on: 开启高效文件传输模式
  • tcp_nopush on: 防止网络阻塞
  • tcp_nodelay on: 防止网络阻塞
  • keepalive_timeout 120: 长连接超时时间,单位是秒
  • default_type application/octet-stream: 默认文件类型
  • gzip on: 开启 gzip 压缩输出
  • include file_path.types; # 文件扩展名与文件类型映射表

server配置段

server配置段最重要的属性是listen和server_name。它们都是用于匹配并处理请求的

server {
listen 端口;
server_name 主机名;
...
}

1. listen属性

  • 作用: 定义Server监听的ip和port,当ip/port匹配时候才进行下一步匹配
  • 使用逻辑: 样式补全为IP:Port后进行匹配,如果有多个Server能匹配上,则按照Server_name继续匹配
形式 描述 示例 完整示例
IP:Port 地址精确表示样式 listen 10.10.10.10:99 完整示例
IP 自动监听 IP:80地址 listen 10.10.10.10:80 listen 10.10.10.10:80
Port 自动监听 全地址:Port listen 99或 [::]:99 listen 0.0.0.0:99
default_server 自动使用默认的地址 listen default_server listen localhost:80

2. server_name属性

  • 作用: 定义Server监听的域名,当域名匹配时候才进行下一步操作
  • 使用逻辑: 优先使用完整样式,然后使用前缀正则样式,最后使用后缀正则样式,如果正则样式相同的时候,匹配最长,否则就走非法规则,非法域名指的是请求到该主机上一个不存在的IP或者域名
形式 完整样式 前缀正则样式 后缀正则样式 禁止非法域名或IP
形式 www.example.com *.example.com www.example.* _

3. root属性

  • 作用:定义Server相应请求的html文件所在路径
  • 表现形式: root /var/www/html;

4. index属性

  • 作用:定义响应请求后返回的文件名称或格式
  • 表现形式: index index.html index.htm index.nginx-debian.html;

5. return属性

  • 作用:定义响应请求后返回的http状态码
  • 表现形式: return 444;

location常见配置属性

  • location主要是根据Server匹配到的请求路径和关键字去响应和处理
location optional_modifier location_match { ... }
location @name { ... }
  • optional_modifier是匹配条件,location_match是匹配的样式,{}是要执行的操作. 匹配条件主要有两种:普通字符串(literal string)和正则表达式(regular expression)

1. 匹配模式及顺序

  1. 先匹配普通字符串,将最精确的匹配暂时存储
  2. 然后按照配置文件中的声明顺序进行正则表达式匹配,只要匹配到一条正则表达式,则停止匹配,取正则表达式为匹配结果
  3. 如果所有正则表达式都匹配不上,则取1中存储的结果
  4. 如果普通字符串和正则表达式都匹配不上,则报404 NOT FOUND
location   =   /uri        =开头表示精确前缀匹配,只有完全匹配才能生效
location   ^~   /uri       ^~开头表示普通字符串匹配上以后不再进行正则匹配
location   ~   pattern     ~开头表示区分大小写的正则匹配
location   ~*   pattern    ~*开头表示不区分大小写的正则匹配
location   /uri            不带任何修饰符,表示前缀匹配
location   /               通用匹配,任何未匹配到其他location的请求都会匹配到。

2. uri和url

  • 匹配指定的请求uri(请求uri不包含查询字符串,如http://localhost:8080/test?id=10,请求uri是/test)
  • uri 代表请求的路径, uri 是url中的一部分

3. location常见动作

  • 基本属性
location / {
root  /var/www/html;  # 指定响应请求的文件所在路径
index index.php index.html index.htm; # 指定响应请求的默认文件名称
expires 7d; # 指定响应请求的文件过期时间,一般用于静态文件
try_files $uri $uri/ =404; # 如果 root 指定的路径下有查找的文件,就返回,否则报错
}
  • 临时跳转
location = /test/ {
return 302 http://sswang.com/;
# 访问旧 url 的时候,临时跳转到新 url,两个 url 均不失效
}
  • 目录列表
location /upload {
alias  /var/www/upload;  # 指定查看文件列表路径(绝对路径)
autoindex on; # 开启目录自动索引
autoindex_exact_size off; # 默认 on,显示文件确切大小(bytes)。 off 表示显示文件的大概大小(kB/MB/...)
autoindex_localtime on; # 默认 off,显示的文件时间为 GMT 时间。on 表示显示文件的服务器时间
}
注意:
该 alias 指定的目录下,不允许出现 index 属性指定的文件。
  • 访问控制
location /nginx-status {
stub_status on; # 开启 nginx 的状态页面,默认关闭
allow 192.168.8.14; # 允许的访问地址
deny all; # 默认进制所有访问
}
注意:
该功能依赖于 ngx_http_stub_status_module 模块

4. location核心动作

try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率

  • 语法:
try_files file ... uri
try_files file ... =code
  • 作用
    响应时按顺序查找file,找到则返回file内容,否则的话进行内部重定向(uri)或返回状态码(code)
  • 示例
如果能找到指定的 uri 那么就返回相应的内容,否则的话返回错误状态码 404
try_files $uri $uri/ =404;
如果能找到指定的文件 1/2.html 那么就返回相应的内容,否则的话返回 6.html 文件内容
try_files /1.html /2.html /6.html;
如果能找到指定的 uri 那么就返回相应的内容,否则的话就内部重定向到后端名称为@backup 的 location
try_files $uri @backup;
  • 注意点
    如果最后一个地址是一个uri的话,那么这个uri必须是存在

root 和 alias 区别

root 和 alias 所起的作用都是指定响应请求所用文件的路径,只是他们有些许的区别

  • root 表示 location 匹配内容的相对路径
location /img/ {
    alias /var/www/image/;
}

访问http://localhost/img/,nginx找/var/www/image/目录下的文件

  • alias 表示 一个绝对路径,而且必须以"/"结尾
location /img/ {
    root /var/www/image;
}

访问http://localhost/img/,nginx找/var/www/image/img/目录下的文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容