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 相关文章推荐
Apache压力测试工具的安装使用
Mar 31 Servers
Nginx同一个域名配置多个项目的实现方法
Mar 31 Servers
Nginx访问日志及错误日志参数说明
Mar 31 Servers
Nginx配置https原理及实现过程详解
Mar 31 Servers
windows下快速安装nginx并配置开机自启动的方法
May 11 Servers
制作能在nginx和IIS中使用的ssl证书
Jun 21 Servers
图文详解nginx日志切割的实现
Jan 18 Servers
HDFS免重启挂载新磁盘
Apr 06 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
Jun 10 Servers
Apache POI操作批量导入MySQL数据库
Jun 21 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
Win10系统搭建ftp文件服务器详细教程
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模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
document.write的几点使用心得
2014/05/14 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
Python编写百度贴吧的简单爬虫
2015/04/02 Python
利用python画一颗心的方法示例
2017/01/31 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
几个数据库方面的面试题
2016/07/01 面试题
项目投资意向书
2014/04/01 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
2014年资料员工作总结
2014/11/18 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
MySQL的索引你了解吗
2022/03/13 MySQL