【Nginx】#安装配置及应用场景使用说明

文章目录

  • 常见公网DNS服务
  • 1.Nginx的安装
    • 版本区别
    • 解压文件
    • 1.1编译安装
    • 1.2 启动安装
    • 1.3 安装成系统服务
  • 2.运行原理
  • 3.Nginx配置及应用场景
    • 3.1最小配置
      • worker_processes
      • worker_connections
      • include mime.types;
      • default_type application/octet-stream;
      • sendfifile on;
      • keepalive_timeout 65;
      • server
    • 3.2虚拟主机
      • servername匹配规则
      • 完整匹配
      • 通配符匹配
      • 通配符结束匹配
      • 正则匹配
  • 4.反向代理
  • 5.基于反向代理的负载均衡
    • 负载均衡策略
    • 轮询
    • weight(权重)
    • ip_hash
    • least_conn
    • url_hash
    • fair
    • 动静分离
      • 配置反向代理
      • 增加每一个location
        • 方式一:配置多个location
        • 方式二:正则表达式
      • 使用一个location
      • alias与root
    • UrlRewrite
      • rewrite语法格式及参数语法

常见公网DNS服务

阿里
223.5.5.5
223.6.6.6
腾讯
119.29.29.29
182.254.118.118
百度
180.76.76.76
114DNS
114.114.114.114
114.114.115.115
谷歌
8.8.8.8
8.8.4.4

1.Nginx的安装

版本区别

常用版本分为四大阵营

  • Nginx开源版
    http://nginx.org/
  • Nginx plus 商业版
    https://www.nginx.com
  • openresty
    http://openresty.org/cn/
  • Tengine
    http://tengine.taobao.org

解压文件

地址https://wwt.lanzouw.com/iN3HA0453evi 密码:amh2
image.png

1.1编译安装

./configure --prefix=/usr/local/nginx
make 
make install

**如果出现警告或报错 **
提示

[root@192 nginx-1.21.6]# ./configure --prefix=/usr/local/nginx
checking for OS
  + Linux 3.10.0-693.el7.x86_64 x86_64
  checking for C compiler ... not found
  
    ./configure: error: C compiler cc is not found
  • 安装gcc

yum install -y gcc

提示:

./configure: error: the HTTP rewrite module requires the PCRE library. 
You can either disable the module by using --without-http_rewrite_module 
option, or install the PCRE library into the system, or build the PCRE library 
statically from the source with nginx by using --with-pcre=<path> option.
  • 安装perl库

yum install -y pcre pcre-devel

提示:

./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.

  • 安装zlib库

yum install -y zlib zlib-devel

  • 接下来执行

make
make install

1.2 启动安装

进入安装好的目录 /usr/local/nginx/sbin

./nginx 					启动 
./nginx -s stop 	快速停止 
./nginx -s quit 	优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置
./nginx -t 				检查配置是否正常

1.3 安装成系统服务

  1. 创建服务脚本

vi /usr/lib/systemd/system/nginx.service

脚本内容:

[Unit] 
Description=nginx - web server 
After=network.target remote-fs.target nss-lookup.target

[Service] 
Type=forking 
PIDFile=/usr/local/nginx/logs/nginx.pid 
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf 
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 
ExecReload=/usr/local/nginx/sbin/nginx -s reload 
ExecStop=/usr/local/nginx/sbin/nginx -s stop 
ExecQuit=/usr/local/nginx/sbin/nginx -s quit 
PrivateTmp=true 

[Install] 
WantedBy=multi-user.target
  1. 重新加载系统服务

systemctl daemon-reload

  1. 启动服务

systemctl start nginx.service

  1. 开机启动

systemctl enable nginx.service

[注意:若启动失败 去掉 PIDFile=/usr/local/nginx/logs/nginx.pid ]

2.运行原理

image.png

3.Nginx配置及应用场景

3.1最小配置

worker_processes

worker_processes 1; 默认为1,表示开启一个业务进程

worker_connections

worker_connections 1024; 单个业务进程可接受连接数

include mime.types;

include mime.types; 引入http mime类型(**以 .*后缀文件的处理方式

default_type application/octet-stream;

default_type application/octet-stream; 如果mime类型没匹配上,默认使用二进制流的方式传输。

sendfifile on;

sendfile on; 使用linux的 sendfile(socket, file, len) 高效网络传输,也就是数据0拷贝。

  • 未开启sendfifile

image.png

  • 开启后

image.png

keepalive_timeout 65;

keepalive_timeout 65;

server

server {
        listen       80;		监听端口号
        server_name  localhost;		主机名
        location / {		匹配路径
            root   html;		文件根目录
            index  index.html index.htm;		默认页名称
        }

        error_page   500 502 503 504  /50x.html;		报错编码对应页面
        location = /50x.html {
            root   html;
        }
    }

3.2虚拟主机

原本一台服务器只能对应一个站点,通过虚拟主机技术可以虚拟化成多个站点同时对外提供服务

servername匹配规则

我们需要注意的是server_name匹配分先后顺序,写在前面的匹配上就不会继续往下匹配了。

完整匹配

我们可以在同一server_name中匹配多个域名

server_name ai.test.com www.test.com;

通配符匹配

server_name *.test.com

通配符结束匹配

server_name ai.*;

正则匹配

server_name ~^[0-9]+\.test\.com$;

4.反向代理

proxy_pass http://baidu.com;

location / { 
  proxy_pass http://www.baidu.com/; 
}

5.基于反向代理的负载均衡

upstream httpd {
  server 192.168.44.102:80;
  server 192.168.43.103:80; 
}

负载均衡策略

轮询

默认情况下使用轮询方式,逐一转发,这种方式适用于无状态请求。

weight(权重)

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况

upstream httpd {
  server 127.0.0.1:8050 weight=10 down;
  server 127.0.0.1:8060 weight=1;
  server 127.0.0.1:8060 weight=1 backup;
}
  • down:表示当前的server暂时不参与负载
  • weight:默认为1.weight越大,负载的权重就越大。
  • backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。

ip_hash

根据客户端的ip地址转发同一台服务器,可以保持回话

least_conn

最少连接访问

url_hash

根据用户访问的url定向转发请求

fair

根据后端服务器响应时间转发请求

动静分离

配置反向代理

location / {
  proxy_pass http://127.0.0.1:8080;
  root html; index index.html index.htm;
}

增加每一个location

方式一:配置多个location
location /css {
    root /usr/local/nginx/static;
    index index.html index.htm;
}
location /images {
    root /usr/local/nginx/static;
    index index.html index.htm;
}
location /js {
    root /usr/local/nginx/static;
    index index.html index.htm;
}
方式二:正则表达式
location ~*/(css|images|json) {
    root /usr/local/nginx/static;
    index index.html index.htm;
}

配置如下:root指定 的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的

[root@192 nginx]# tree ./static/
./static/
├── images
│   └── 2.png
└── json
    └── 1.json

image.png

使用一个location

使用正则
location 前缀
/ 通用匹配,任何请求都会匹配到。
= 精准匹配,不是以指定模式开头
~ 正则匹配,区分大小写
~* 正则匹配,不区分大小写^~ 非正则匹配,匹配以指定模式开头的location
location匹配顺序

  • 多个正则location直接按书写顺序匹配,成功后就不会继续往后面匹配
  • 普通(非正则)location会一直往下,直到找到匹配度最高的(最大前缀匹配)
  • 当普通location与正则location同时存在,如果正则匹配成功,则不会再执行普通匹配
  • 所有类型location存在时,=匹配 > ^~匹配 > 正则匹配 > 普通(最大前缀匹配)
location ~*/(css|img|js) {
  root /usr/local/nginx/static;
  index index.html index.htm;
}

alias与root

location /css {
  alias /usr/local/nginx/static/css; 
  index index.html index.htm;
}

root用来设置根目录,而alias在接受请求的时候在路径上不会加上location

  1. alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;
  2. root指定 的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;
  3. 使用 alias标签的目录块中不能使用rewrite的break(具体原因不明);另外,alias指定的目录后面必须要加上"/"符 号!!
  4. alias虚拟目录配置中,location匹配的path目录如果后面不带"/“,那么访问的url地址中这个path目录后 面加不加”/“不影响访问,访问时它会自动加上”/“; 但是如果location匹配的path目录后面加上”/“,那么访问的url地 址中这个path目录必须要加上”/“,访问时它不会自动加上”/“。如果不加上”/",访问就会失败!
  5. root目录配置 中,location匹配的path目录后面带不带"/",都不会影响访问。

UrlRewrite

rewrite语法格式及参数语法

rewrite是实现URL重写的关键指令,根据regex (正则表达式)部分内容, 重定向到replacement,结尾是flag标记。

rewrite <regex> <replacement> [flag];
关键字 正则 替代内容 flag标记

关键字:其中关键字error_log不能改变

正则:perl兼容正则表达式语句进行规则匹配
替代内容:将正则匹配的内容替换成replacement
flag标记:rewrite支持的flag标记
rewrite参数的标签段位置: server,location,if
flag标记说明:

  • last #本条规则匹配完成后,继续向下匹配新的location URI规则
  • break #本条规则匹配完成即终止,不再匹配后面的任何规则
  • redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
  • permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

实例:
rewrite ^/([0-9]+).html$ /index.jsp?pageNum=$1 break;
1 :匹配第一个规 则 / ( [ 0 − 9 ] + ) . h t m l 1:匹配第一个规则 ^/([0-9]+).html 1:匹配第一个规/([09]+).html: 后面的地址全部伪装为 0-9.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/296190.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云原生战专题 | 深入浅出分析云原生微服务的技术结构和架构设计

深入浅出分析云原生微服务的技术结构和架构设计 云原生容器技术背景容器编排Kubernetes控制平面的四大组件Kubernetes在容器编排中的设计要点 云原生微服务典型架构第一代微服务架构第二代微服务架构第三代微服务架构第四代微服务架构 未来的云原生架构 — Serverless 云原生容…

gitlab 配置 二

一 环境说明 群晖Nas DS418DELL XPS serverGitlab ce 二 需要实现的功能 外网可以访问&#xff0c;gitlab使用https的方式访问。wiki issue 等都可以上传图片和附件。 三 操作步骤 因为群晖上有证书&#xff0c;并且由群晖做转发功能。因此证书上&#xff0c;采用群晖的证书…

Linux LVM逻辑卷

一、LVM的定义 LVM 是 Logical Volume Manager 的简称&#xff0c;译为中文就是逻辑卷管理。它是 Linux 下对硬盘分区的一种管理机制。LVM 适合于管理大存储设备&#xff0c;并允许用户动态调整文件系统的大小。此外&#xff0c;LVM 的快照功能可以帮助我们快速备份数据。LVM 为…

聚观早报 |谷歌起草“机器人宪法”;极越与福耀集团达成合作

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 1月6日消息 谷歌起草“机器人宪法” 极越与福耀集团达成合作 三星电子宣布与现代汽车集团合作 OpenAI下周将推GP…

【elfboard linux 开发板】9. 虚拟机扩容和内核编译

1. 虚拟机扩容 需要将虚拟机的快照全都删除&#xff0c;并且将运行的系统关机点击扩展&#xff0c;改为需要的磁盘大小安装gparted工具 sudo apt-get install gparted 如果报错&#xff0c;则按照出错内容修改&#xff0c;一般是出现下载错误&#xff0c;可以使用下列命令&…

05、Kafka ------ CMAK 各个功能的作用解释(主题和分区 详解,用命令行和图形界面创建主题和查看主题)

目录 CMAK 各个功能的作用解释&#xff08;主题&#xff09;★ 主题★ 分区★ 创建主题&#xff1a;★ 列出和查看主题 CMAK 各个功能的作用解释&#xff08;主题&#xff09; ★ 主题 Kafka 主题虽然也叫 topic&#xff0c;但它和 Pub-Sub 消息模型中 topic 主题及 AMQP 的 t…

Java经典框架之Zookeeper

Zookeeper Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. Zookeeper的介绍和安装 2. …

web学习笔记(九)

目录 1.初识JS(JavaScript) 1.1什么是JavaScript&#xff1f; 1.2HTML5 CSS3 javaScript三者的关系 1.3 JAVAScript的作用 1.4JAVAScript的组成部分 1.5JS注释 1.6补充知识 2.JS的引入方法 2.1行内式 2.2嵌入式&#xff08;内嵌式&#xff09; 2.3外链式 3.输入和…

深入理解Word Embeddings:Word2Vec技术与应用

目录 前言1 Word2Vec概述2 CBOW模型2.1 CBOW模型简介2.2 基于词袋&#xff08;bag of word&#xff09;的假设2.3 One-hot向量编码2.4 分类问题 3 Skip-gram模型3.1 Skip-gram模型简介3.2 目标词预测上下文3.3 词语关联性的捕捉 4 优化Word2Vec模型的方法4.1 负采样和分层softm…

转转服务瘦身实战

文章目录 1 背景2 第一步-发现并下掉僵尸服务2.1 如何发现僵尸服务2.2 如何下掉僵尸服务 3 第二步-发现并下掉僵尸方法3.1 如何发现僵尸方法3.1.1 全量方法的获取3.1.2 活动方法的获取3.1.3 ServiceAbility Agent方案详解3.1.3.1 ServiceAbility Agent使用方法3.1.3.2 解决stop…

分布式系统架构设计之分布式缓存技术选型

一、概述 随着互联网业务的快速发展&#xff0c;分布式系统已经成为了解决大规模并发请求、高可用性、可扩展性等问题的重要手段。在分布式系统中&#xff0c;缓存作为提高系统性能的关键技术&#xff0c;能够显著降低数据库负载、减少网络延迟、提高数据访问速度。当面对大量…

XD6500S一款串口SiP模块 射频LoRa芯片 内置sx1262

1.1产品介绍 XD6500S是一款集射频前端和LoRa射频于一体的LoRa SIP模块系列收发器SX1262 senies&#xff0c;支持LoRa⑧和FSK调制。LoRa技术是一种扩频协议优化低数据速率&#xff0c;超长距离和超低功耗用于LPWAN应用的通信。 XD6500S设计具有4.2 mA的有效接收电流消耗&#…

Python基础知识总结2——python中的字符串

python字符串 字符串基本特点空字符串和len()函数转义字符字符串拼接字符串复制不换行打印从控制台读取字符串replace() 实现字符串替换str()实现数字转型字符串使用[]提取字符字符串切片slice操作split()分割和join()合并字符串驻留机制和字符串比较字符串比较和同一性成员操作…

Python如何实现微信支付功能代码示例

微信支付是一种基于互联网的移动支付服务&#xff0c;由中国的即时通讯工具微信提供。用户可以通过微信支付在微信平台上进行在线支付、转账和收款。微信支付支持多种支付方式&#xff0c;包括银行卡支付、微信钱包余额支付、扫码支付等。用户可以用微信支付购买商品、支付账单…

C语言编译器(C语言编程软件)完全攻略(第二十一部分:Code::Blocks汉化教程(附带汉化包))

介绍常用C语言编译器的安装、配置和使用。 二十一、Code::Blocks汉化教程&#xff08;附带汉化包&#xff09; 由于官方下载的 CodeBlocks 全部都是英文版&#xff0c;本教程中给大家推荐的 CodeBlocks 17.12 版本也是官方英文版&#xff0c;所以本节给大家介绍&#xff1a;如…

C# .Net学习笔记—— 异步和多线程(await/async)

一、介绍 1、控制台测试await/async 2、C# 5.0 .Net framework4.5 CLR4.0 以后才有&#xff0c;本身是一种语法糖 二、基本测试 1、不加await测试。 private async static Task TestAsync() {Log.Info($"当前主线程id{Thread.CurrentThread.ManagedThreadId}"…

【六大排序详解】终篇 :冒泡排序 与 快速排序

终篇 :冒泡排序 与 快速排序 1 冒泡排序1.1 冒泡排序原理1.2 排序步骤1.3 代码实现 2 快速排序2.1 快速排序原理2.1.1 Hoare版本代码实现 2.1.2 hole版本代码实现 2.1.3 前后指针法代码实现 2.1.4 注意取中位数局部优化 2.1.5 非递归版本非递归原理代码实现 2.2 特性总结 谢谢阅…

负责任的人工智能与人机环境系统智能

负责任的人工智能是指在人工智能系统的设计、开发、管理、使用和维护过程中&#xff0c;所有相关的角色&#xff08;包括设计者、开发者、管理者、使用者、维护者等等&#xff09;都承担其行为的道义、法律和社会责任。这意味着这些角色需要确保人工智能系统的设计与使用符合伦…

网络安全B模块(笔记详解)- Web渗透测试

Web信息收集 1.通过Kali对服务器场景Linux进行Web扫描渗透测试(使用工具nikto,查看该命令的完整帮助文件),并将该操作使用命令中固定不变的字符串作为Flag提交; Flag:nikto -H 2.通过Kali对服务器场景Linux进行Web扫描渗透测试(使用工具nikto,扫描目标服务器8080端口,…

阻止持久性攻击改善网络安全

MITRE ATT&CK框架是一个全球可访问的精选知识数据库&#xff0c;其中包含基于真实世界观察的已知网络攻击技术和策略。持久性是攻击者用来访问系统的众多网络攻击技术之一;在获得初始访问权限后&#xff0c;他们继续在很长一段时间内保持立足点&#xff0c;以窃取数据、修改…