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 相关文章推荐
Nginx tp3.2.3 404问题解决方案
Mar 31 Servers
nginx 反向代理之 proxy_pass的实现
Mar 31 Servers
nginx搭建图片服务器的过程详解(root和alias的区别)
Mar 31 Servers
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
Jul 07 Servers
了解Kubernetes中的Service和Endpoint
Apr 01 Servers
Docker 镜像介绍以及commit相关操作
Apr 13 Servers
教你如何用cmd快速登录服务器
Jun 10 Servers
Win2008系统搭建DHCP服务器
Jun 25 Servers
nginx访问报403错误的几种情况详解
Jul 23 Servers
Docker容器harbor私有仓库部署和管理
Aug 05 Servers
Fluentd搭建日志收集服务
Sep 23 Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
Sep 23 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在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
jQuery中next方法用法实例
2015/04/24 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
python事件驱动event实现详解
2018/11/21 Python
Python 如何提高元组的可读性
2019/08/26 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
使用Python封装excel操作指南
2021/01/29 Python
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
高中生自我鉴定范文
2013/10/30 职场文书
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
英语感恩演讲稿
2014/01/14 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
党员身份证明材料
2015/06/19 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python