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

news2024/9/29 15:32:25

文章目录

  • 常见公网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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s实践(14)--scheduler调度器和pod调度策略

一、scheduler调度器 1、kube-scheduler简介 k8s实践(10) -- Kubernetes集群运行原理详解 介绍过kube-scheduler。 kube-scheduler是运行在master节点上&#xff0c;其主要作用是负责资源的调度&#xff08;Pod调度&#xff09;&#xff0c;通过API Server的Watch接口监听新建…

vue3按钮点击频率控制

现有一个按钮&#xff0c;如下图 点击时 再次点击 刷新窗口再次点击 刷新窗口依然可以实现点击频率控制。 代码实现&#xff1a; <template><!--<el-config-provider :locale"locale"><router-view/></el-config-provider>--><el…

TypeScript 从入门到进阶之基础篇(四) symbol类型篇

系列文章目录 TypeScript 从入门到进阶系列 TypeScript 从入门到进阶之基础篇(一) ts基础类型篇TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇TypeScript 从入门到进阶之基础篇(三) 元组类型篇TypeScript 从入门到进阶之基础篇(四) symbol类型篇 持续更新中… 文章目录 …

码农好沟通吗?

码农好沟通吗&#xff1f;这个标题本身就是一个问题&#xff0c;个人认为 找对沟通的对象&#xff0c;是保证有效沟通的前提和基础 &#xff0c;很多时候都能听见程序员和客户沟通差点把客户气死&#xff0c;理解不到客户的需求点。因为相互间的知识体系都不一样&#xff0c;如…

visi 各版本安装指南

visi下载链接 https://pan.baidu.com/s/1WNksdiChCPebPvRRSVakOA?pwd0531 1.鼠标右键【visi2021(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;选择【解压到 visi2021(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠标右击【Setup VISI 2…

Ubuntu软件和vmware下载

https://cn.ubuntu.com/download/desktop VMware 中国 - 交付面向企业的数字化基础 | CN

Linux Ubuntu 20.04.6 Intel WiFi6 Ax411 1690i Ax1690i Killer 解决无线网卡识别不出来问题

项目场景&#xff1a; 网卡型号&#xff1a;英特尔 Killer™ Wi-Fi 6E AX1690 i/s ubuntu 版本 uname -a Linux kuanli 5.15.0-91-generic #101~20.04.1-Ubuntu SMP Thu Nov 16 14:22:28 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux cat /proc/version Linux version 5.15.0-9…

注册 Mongodb 官网个人账号

上文 Mongodb基础介绍与应用场景我们简单说了一下 Mongodb 的场景 那么 我们先在他的官网创建一个个人账号 我们先访问官网 https://www.mongodb.com/zh-cn 这里 我们需要注册一下 这里 我们按要求填写信息 然后 点击下面创建账户 然后 点击下面创建账户 然后 他会要求我们邮…

三维地下管线建模工具MagicPipe3D V3.3发布

经纬管网建模系统MagicPipe3D V3.3 持续更新&#xff0c;欢迎下载试用&#xff1a;http://www.magic3d.net 1、发布MagicPipe3D宣传操作视频, 2、发布MagicPipe3D数据规格说明, 3、更新使用手册到3.3.0版本, 4、增加支持属性字段中文, 5、增加支持附属物方…

5.云原生安全之kubesphere应用网关配置域名TLS证书

文章目录 cloudflare配置使用cloudflare托管域名获取cloudflare API Token在cloudflare中配置SSL/TLS kubesphere使用cert-manager申请cloudflare证书安装证书管理器创建Secret资源创建cluster-issuer.yaml创建cert.yaml申请证书已经查看申请状态 部署harbor并配置ingress使用证…

【论文解读】基于神经辐射场NeRF的像素级交互式编辑(Seal-3D)

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/pdf/2307.15131 项目主页&#xff1a;https://windingwind.github.io/seal-3d/ 摘要&#xff1a; 随着隐式神经表征或神经辐射场&#xff08;NeRF&#xff09;的普及…

docker部署simpleDocker

1&#xff0c;安装docker&#xff0c;请参考 linux安装docker 2&#xff0c;安装docker-compose&#xff0c;请参考 Docker-Compose 3&#xff0c;安装simpleDocker 准备docker-compose.yml文件 version: 3 services:redis:container_name: redisimage: redis:latestweb:conta…

算法基础之二分与前缀和 day 6

文章目录 二分第一类第二类 前缀和原题链接题目描述输入格式输出格式数据范围输入样例&#xff1a;输出样例&#xff1a; 题目分析示例代码 二分 二分法是我们在高中数学就学习过的一种思想&#xff0c;他也是一种效率较高的查找算法&#xff0c;在编写代码的过程中&#xff0…

关于“Python”的核心知识点整理大全64

目录 20.2.15 确保项目的安全 settings.py 20.2.16 提交并推送修改 20.2.17 创建自定义错误页面 1. 创建自定义模板 500.html settings.py settings.py 注意 views.py 20.2.18 继续开发 往期快速传送门&#x1f446;&#xff08;在文章最后&#xff09;&#xff1a…

基于 Python+Neo4j+医药数据,构建了一个知识图谱的自动问答系统

知识图谱是目前自然语言处理的一个热门方向。目前知识图谱在各个领域全面开花&#xff0c;如教育、医疗、司法、金融等。 本项目立足医药领域&#xff0c;以垂直型医药网站为数据来源&#xff0c;以疾病为核心&#xff0c;构建起一个包含7类规模为4.4万的知识实体&#xff0c;…

16.顺子日期(14)

题目 public class Main {public static boolean isLegal(String date) {int l 0;int n date.length();while(l<(n-3)) {int t1 (int)Integer.valueOf(date.substring(l,l1));int t2 (int)Integer.valueOf(date.substring(l1,l2));int t3 (int)Integer.valueOf(date.s…

案例介绍|钡铼助力2023年全国职业院校技能大赛工业网络智能控制与维护赛项

如今&#xff0c;越来越多的企业开始意识到数字制造和工业物联网已经成为工业自动化中大规模生产的核心驱动力。这其中&#xff0c;工业网络作为基础设施&#xff0c;是实现工厂设备联网与数据采集&#xff0c;建设数字工厂的基础和前提&#xff0c;甚至成为关乎数字工厂能否真…

C++ 类的内存分布

文章目录 1 . 前言2 . 无继承&#xff0c;无虚函数3 . 无继承&#xff0c;有虚函数4 . 单一继承&#xff0c;无虚函数5 . 单一继承&#xff0c;有虚函数&#xff0c;虚析构6 . 多重继承7 . 菱形继承8 . 虚拟继承9 . 总结 【极客技术传送门】 : https://blog.csdn.net/Engineer_…

CentOS:docker容器日志清理

1.先查看磁盘空间 df -h 2.找到容器的containerId-json.log文件,并清理 find /var/lib/docker/containers/ -name *-json.log |xargs du -sh 3、可以根据需求清理对应日志也可以清理数据大的日志 $ cat /dev/null > /var/lib/docker/containers/dbaee0746cc6adad3768b4ef…

Java快速排序希尔排序归并排序

快速排序算法 快速排序的原理&#xff1a;选择一个关键值作为基准值。比基准值小的都在左边序列&#xff08;一般是无序的&#xff09;&#xff0c;比基准值大的都在右边&#xff08;一般是无序的&#xff09;。一般选择序列的第一个元素。 一次循环&#xff1a;从后往前比较&…