Nginx 配置初步 下
Nginx 配置初步(下)
一行代表一个指令;
每个指令有其上下文环境,比如 listen 指令只能在 http 指令块中出现,不能单独出现。
1. Http 服务配置初步
1.1 常用指令
Nginx 的所有模块,打开模块我们就能看到模块中支持的指令。最常用的指令,如 http、server、listen 等都在 ngx_http_core_modul 模块中,这个是 Nginx 的核心模块。
1.2 listen 指令
Syntax: listen address[:port] [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];listen port [default_server] [ssl] [http2 | spdy] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];listen unix:path [default_server] [ssl] [http2 | spdy] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];Default:listen *:80 | *:8000;Context: server
listen 指令的上下文环境是 server 指令,所以 listen 指令只能出现在 server 指令块中。此外,listen 指令的作用就是监听上层端口,将对应端口发来的请求进行拦截并处理。官方给了许多 listen 的使用示例:
# 这些写法要考虑特定的环境和场景
listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;# 比较特殊的用法,针对unix系统
listen unix:/var/run/nginx.sock;
1.3 http 指令
Syntax: http { ... }
Default: —
Context: main
可以看到 http 指令是指令块形式,属于主环境 main,它里面的指令是用于设置 http 相关参数的。比如设置 server 配置等,配置连接超时时间等。
...# 主位置,最左边
http {#指令或者指令块...
} ...
1.4 server 指令
Syntax: server { ... }
Default: —
Context: http
server 的上下文环境是 http,这说明 server 指令块只能出现在http指令块中,否则会出错。server 指令块中也是许多指令的集合,比如listen指令,表示监听 http 请求的端口,还有 server_name、root、index 等指令。
...http {server {# 监听端口listen 8089;server_name localhost;# 今天资源根路径root /data/yum_source;# 打开目录浏览功能autoindex on;# 指定网站初始页,找index.html或者index.htm页面index index.html index.htm;}...
}
...
Nginx 的在一些场景下的配置,使用到的都是一些简单的配置指令。
2. 静态服务资源配置
配置静态资源服务器是非常简单的一件事情。实现静态资源访问的关键指令有 root 和 alias,我们会做一个案例来演示其用法和二者的区别。
2.1 案例1
准备好静态资源文件,我们就在 /root/test/ 下新建一个 index.html,并新建目录 web,同时继续在 web 目录下分别新建 web1.html 和 web2.html 文件,具体的目录结构如下所示:
[root@server ~]# cd /root/test
[root@server test]# tree .
.
├── index.html
└── web├── web1.html└── web2.html1 directory, 3 files
Nginx 的配置如下:
user root;
worker_processes 2;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 8080;# 静态资源根理解root /root/test;# 打开目录浏览功能autoindex on;# 指定网站初始页,找index.html或者index.htm页面index index.html index.htm;}server {listen 8081;location /web {root /root/test/;}}server {listen 8082;location /web {alias /root/test/;}}}
测试结果
对于监听的 8080 端口,我们直接使用 root 指令,指定资源的根路径。这样子,当我们在浏览器上直接访问 http:// 服务器的 ip:8080/web/web1.html 或者 http://服务器ip:8080/web/web2.html 时,就能访问对应的 web1.html 和 web2.html 页面;若没有指定静态资源地址(即/路径),默认会找由 index 指令指定的文件,即 index.html 或者 index.htm 文件;
访问 8080 的/地址

访问web1.html文件

访问web2.html文件

对于监听的 8081 端口,我们直接使用 root 指令,指定资源的根路径。当请求 http://服务器ip:8081/web/xxxx 地址时,等价于访问服务器上的静态资源文件 /root/test/[匹配到的web]/xxxx,也即/root/test/web/xxxx,访问 web2.html 类似;
通过 8081 端口访问 web1.html 资源

通过 8081 端口访问静态资源 web2.html

对于监听的 8082 端口,我们使用的是 alias 指令,指定资源路径的别名,它与 root 指令略有不同。当请求 http://服务器ip:8082/web/xxxx 地址时,等价于访问服务器上的静态资源文件 /root/test/xxxx,并不会将匹配到的web添加到静态资源的路径上,所有为了能访问到 web1.html,我们需要使用如下的url:http://服务器ip:8082/web/web/web1.html, 访问 web2.html 类似。结果如下:
通过alias指令访问web1.html

通过alias指令访问web2.html

3. 反向代理配置初步
| 反向代理是将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。 | |
|---|---|
这样做的好处是可以隐藏内部服务部署情况,通过统一入口控制网络流量。另外,我们还可以在总入口处设置负载均衡,将用户请求分配给多个服务器。反向代理实现的指令是 proxy_pass ,我们简单使用下这个指令进行测试,了解其作用。
案例
在上面配置文件的基础上,我们增加一个 server 指令块,监听 9000 端口,匹配 url 请求,转发到 web1.html 和 web2.html 页面,具体配置如下:
...server {listen 9000;location /web1 {proxy_pass http://localhost:8081/web/web1.html;}location /web2 {proxy_pass http://localhost:8081/web/web2.html;}}...
这样,当我们访问 url 地址 http://服务器ip:9000/web1 时,会将请求转发到 http://localhost:8081/web/web1.html ,而这个如果是在服务器上执行会根据前面的配置访问静态资源web1.html。 同样,对于访问 web2.html 页面,我们只需要请求 http://服务器ip:9000/web2 即可。
测试结果
通过方向代理访问 web1.html

通过方向代理访问 web2.html

4. tcp/udp 配置初步
Nginx 从 1.9.0 版本开始,新增加了一个 stream 模块,用来实现四层协议的转发、代理或者负载均衡等。这个模块使用和 http 指令块类似。我们同样在之前的配置准备一个 nginx.conf 文件,里面只有一个 stream 的指令块,如下:
user root;
worker_processes 2;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;
}stream {server {listen 3000;return '3000 server get ip: $remote_addr!\n';}
}
指令块只有一个 stream 块,监听了 3000 端口。对于 tcp 连接,可以使用 proxy_pass 转发 tcp/udp 协议。也可以直接使用 return 指令返回,这里只是简单返回相应字符串。
测试结果
在 Windows 下,打开命令窗口,然后输入telnet 180.76.152.113 3000 命令,正常应该会有相应的字符串响应。如果出现下面的错误,需要在Window 中打开 telnet 客户端,具体操作见下图。

解决找不到 telnet 命令方法 1

在这里选择勾上 Telnet 客户端即可。

最后 telent 命令返回结果:

相关文章:
Nginx 配置初步 下
Nginx 配置初步(下) 一行代表一个指令; 每个指令有其上下文环境,比如 listen 指令只能在 http 指令块中出现,不能单独出现。1. Http 服务配置初步 1.1 常用指令 Nginx 的所有模块,打开模块我们就能看到模块中支持的指令。最常用…...
可视化ETL平台-Kettle的安装及简单使用
本章知识简介 主线A: 自连接查询; 主线B: 安装JDK与Kettle; 主线C: 使用Kettle工具. 本章目标: 1: 知道使用一张表可以实现自连接查询; [了解]注意: 左表、右表都是同一张表 2: 了解Kettle环境的安装流程; [了解]a.安装JDKb.安装Kettle 3: 熟悉使用kettle将txt数…...
java8 动态加载jar包至系统的classpath
1. io.test包 创建MyMain.java类,创建addJarToClasspath方法将jar包动态加载进系统的classpath中 package io.test;import java.io.File; import java.net.URL; import java.net.URLClassLoader; import java.lang.reflect.Method;public class MyMain {public st…...
C++二级题 计算好数:1数大于0数(二进制的位运算)
1、题目 若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为好数。 例如: (13)10 (1101)2,其中1的个数为3,0的个数为1,则此数是好数; (10)10 (1…...
数字孪生城市:智慧城市的未来蓝图
在当今数字化时代,智能技术的广泛应用正在改变人们的生活和工作方式。数字孪生城市作为未来新型智慧城市演进的重要方向,数字孪生城市是一种将城市物理世界的各个方面转化为数字形式的技术,通过网络空间与物理世界之间的实时数据交换和仿真分…...
Java篇图书管理系统
目录 前言 一. 图书管理系统的核心 二. 图书管理系统基本框架 2.1 book包 2.1.1 Book(书籍类) 2.1.2 Booklist (书架类) 2.2 user包 2.2.1 User类 2.2.2 Administrator(管理员类) 2.2.3 Visitor(用户类) 2.…...
BUUCTF之web篇
第一题 [极客大挑战 2019]EasySQL 打开靶机后可以看到这是一个登陆的页面 我们可以尝试两种方式登录 弱口令爆破(burpsuite) 通过SQL注入里的万能密码来跳过账户和密码验证的过程 这里就需要万能密码aor true # 在这里单引号的作用是结束用户名或者密码…...
010——二叉树(2)线索化
引入: 问题1: n个节点的二叉树,用二叉链表存储,问在这个二叉链表中一共有 __个指针域? 其中,有 __个指针域不为NULL,__个指针域为NULL? 答:2n n-1 n1 在二叉链表中…...
鸿蒙拍照小助手02
项目文件目录 为了确保项目文件目录清晰,以下是完整的项目文件目录结构: code 拍照小助手/ │ ├── entry/ │ ├── src/ │ │ ├── main/ │ │ │ ├── js/ │ │ │ │ └── 默认/ │ │ │ │ ├── 页面/ │ │ │ │ │ ├── 主页/ │ │ │ │ │ │ ├…...
lua while循环
软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua作为一种小巧精致的语言,特别适用于嵌入其他程序提供脚本支持。在编程中,循环结构是不可或缺的一部分,而while循环则是…...
JAVA篇之类和对象
目录 一. 面向对象 1.1 面向对象和面向过程 二. 类的定义和使用 2.1 什么是类 2.2 类的定义格式 三. 类的实例化 四. this引用 4.1 this引用的作用 五. 构造方法 5.1 构造方法重载 5.2 通过this调用其他构造方法 5.3 默认初始化 结语 一. 面向对象 Java 是一门面向对…...
IO流详解_CoderLix
主要内容 File类IO流字节流字符流异常处理Properties缓冲流转换流序列化流打印流 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 1.2 构造方法 public File(String pathname) :通过…...
241023-RHEL非管理员安装Docker并开放指定宿主机端口部署Gitlab
A. RHEL非管理员安装Docker 要在没有管理员权限的情况下离线安装 Docker 和 Docker Compose,虽然受到一定限制,仍有一些可行的步骤可以帮助你在有限权限下完成这项任务。需要注意的是,这种方式适用于本地用户环境下的 Docker 安装࿰…...
python ubuntu安装加速
ubuntu升级python到python3.11(可能是全网最靠谱的方法,亲测有效)_ubuntu python3.11-CSDN博客 python-release安装包下载_开源镜像站-阿里云...
100种算法【Python版】第12篇——快速幂算法
本文目录 1 基本原理2 基本步骤3 数学示例4 python代码1 基本原理 快速幂算法(Fast Exponentiation)是一种高效计算整数幂的方法,尤其适用于计算大数的幂。其主要思想是利用分治法和二进制表示来减少乘法运算的次数,从而加快计算速度。 计算 x n x^n x...
Java多线程详解②(全程干货!!!)Thread Runnable
这里是Themberfue 上节主要讲完了多线程的一些基础知识,这节通过代码进一步理解多线程🫡 多线程 Java标准库中提供了Thread类,以程序员们编写多线程代码,我们可以查看官方文档进一步了解Thread的特性以及提供的接口。 类似于Sy…...
机器学习——图神经网络
图神经网络(GNN):理解复杂网络数据的有效工具 图神经网络(Graph Neural Network, GNN)是近年来机器学习领域的热门话题。GNN 以图结构数据为核心,能够高效地捕捉节点和边的复杂关系,广泛应用于社交网络、推荐系统、生…...
一、在cubemx下RTC配置调试实例测试
一、rtc的时钟有lse提供。 二、选择rtc唤醒与闹钟功能 内部参数介绍 闹钟配置 在配置时间时,注意将时间信息存储起来,防止复位后时间重新配置。 if(HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR0)! 0x55AA)//判断标志位是否配置过,没有则进…...
【Nas】X-DOC:Mac mini Docker部署中国特供版Jellyfin
【Nas】X-DOC:Mac mini Docker部署中国特供版Jellyfin 1、拉取镜像:2、启动镜像3、访问服务4、参考文档 Mac mini Docker部署中国特供版Jellyfin 1、拉取镜像: docker pull nyanmisaka/jellyfin:230901-amd64jellyfin 10.8.10版本ÿ…...
合合信息:生成式Al时代的内容安全与系统构建加速,开启智能文档的全新潜能
文章目录 写在前面图像内容安全图像篡改应用场景伪造文档/证照检测伪造人脸检测 GAI时代系统构建加速通用文档解析 合合信息 写在前面 随着人工智能技术的飞速发展,生成式AI已经悄然步入了我们的日常生活,以其强大的内容生成能力,重塑了信息…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
