Nginx速查手册及常见问题


Posted in Servers onApril 07, 2022

Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的IO性能,时常用于服务端的反向代理和负载均衡。

Nginx速查手册及常见问题

常用命令

使用自定义配置文件启动

nginx -c /opt/nginx/config/nginx.conf

柔和重启

nginx -s reload

优雅停止服务

nginx -s quit

强制停止服务

nginx -s stop

配置文件检查

nginx -t

常用配置

反向代理

server {  
  listen 80;                                                         
  server_name localhost;                                               
  client_max_body_size 1024M;

  location / {
    proxy_pass http://localhost:8080;
    proxy_set_header Host $host:$server_port;
  }
}

负载均衡

upstream test {
  server localhost:8080;
  server localhost:8081;
}
server {
  listen 81;                                                         
  server_name localhost;                                               
  client_max_body_size 1024M;

  location / {
    proxy_pass http://test;
    proxy_set_header Host $host:$server_port;
  }
}

http服务器

server {
  listen 80;                                                         
  server_name localhost;                                               
  client_max_body_size 1024M;

  location / {
    root e:\wwwroot;
    index index.html;
  }
}

动静分离

upstream test{  
  server localhost:8080;  
  server localhost:8081;  
}   

server {  
  listen 80;  
  server_name localhost;  

  location / {  
    root d:\wwwroot;  
    index index.html;  
  }  

  --所有静态请求都由nginx处理,存放目录为html  
  location ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {  
    root d:\wwwroot;  
  }  

  --所有动态请求都转发给tomcat处理  
  location ~ \.(jsp|do)$ {  
    proxy_pass http://test;  
  }  

  error_page 500 502 503 504 /50x.html;  
  location = /50x.html {  
    root d:\wwwroot;  
  }  
}

正向代理

resolver 114.114.114.114 8.8.8.8;
  server {
    resolver_timeout 5s;
    listen 81;
    access_log d:\wwwroot\proxy.access.log;
    error_log d:\wwwroot\proxy.error.log;
    location / {
      proxy_pass http://$host$request_uri;
    }
  }
#防盗链
location ~* \.(gif|jpg|png)$ {
    # 只允许 192.168.0.1 请求资源
    valid_referers none blocked 192.168.0.1;
    if ($invalid_referer) {
       rewrite ^/ http://$host/logo.png;
}

根据文件类型设置过期时间

location ~.*\.css$ {
    expires 1d;
    break;
}
location ~.*\.js$ {
    expires 1d;
    break;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    access_log off;
    expires 15d; #保存15天
    break;
}

匹配规则

location = / {
  # 精确匹配 / ,主机名后面不能带任何字符串
  [ configuration A ]
}
location / {
  # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
  # 但是正则和最长字符串会优先匹配
  [ configuration B ]
location /documents/ {
  # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
  # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
  [ configuration C ]
location ~ /documents/Abc {
  # 匹配任何以 /documents/Abc 开头的地址,匹配符合以后,还要继续往下搜索
  [ configuration CC ]
location ^~ /images/ {
  # 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
  [ configuration D ]
location ~* \.(gif|jpg|jpeg)$ {
  # 匹配所有以 gif,jpg或jpeg 结尾的请求
  # 然而,所有请求 /images/ 下的图片会被 config D 处理,因为 ^~ 到达不了这一条正则
  [ configuration E ]
location /images/ {
  # 字符匹配到 /images/,继续往下,会发现 ^~ 存在
  [ configuration F ]
location /images/abc {
  # 最长字符匹配到 /images/abc,继续往下,会发现 ^~ 存在
  # F与G的放置顺序是没有关系的
  [ configuration G ]
location ~ /images/abc/ {
  # 只有去掉 config D 才有效:先最长匹配 config G 开头的地址,继续往下搜索,匹配到这一条正则,采用
    [ configuration H ]

常见问题

# root 和 alias的区别?
**root**
location /i/ {
  root /data/wwwroot;
}
真实的路径是root指定的值加上location指定的值,即/data/wwwroot/i/...

**alias**
location /i/ {
  alias /data/wwwroot/;
}
在服务器查找的资源路径是: /data/wwwroot/...

到此这篇关于Nginx速查手册的文章就介绍到这了,更多相关Nginx速查手册内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
Mar 09 Servers
Nginx进程管理和重载原理详解
Apr 22 Servers
nginx请求限制配置方法
Jul 09 Servers
Kubernetes关键组件与结构组成介绍
Mar 31 Servers
Nginx+Tomcat负载均衡多实例详解
Apr 11 Servers
Ubuntu Server 安装Tomcat并配置systemctl
Apr 28 Servers
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
Apr 29 Servers
Nginx配置之禁止指定IP访问
May 02 Servers
nginx实现多geoserver服务的负载均衡
May 15 Servers
linux目录管理方法介绍
Jun 01 Servers
如何让你的Nginx支持分布式追踪详解
Jul 07 Servers
windows系统搭建WEB服务器详细教程
Aug 05 Servers
从零开始在Centos7上部署SpringBoot项目
CentOS7和8下安装Maven3.8.4
CentOS下安装Jenkins的完整步骤
基于Apache Hudi在Google云构建数据湖平台的思路详解
HDFS免重启挂载新磁盘
Apr 06 #Servers
OpenStack虚拟机快照和增量备份实现方法
Apr 04 #Servers
使用Docker容器部署rocketmq单机的全过程
Apr 03 #Servers
You might like
php使用json_encode对变量json编码
2014/04/07 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
js中function()使用方法
2013/12/24 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
2015/08/24 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
layui表格数据重载
2019/07/27 Javascript
vue集成chart.js的实现方法
2019/08/20 Javascript
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
python机器学习之神经网络(二)
2017/12/20 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
德国购买健身器材:AsVIVA
2017/08/09 全球购物
敬老院活动总结
2014/04/28 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
小学中等生评语
2014/12/29 职场文书
聚会通知怎么写
2015/04/23 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android