nginx核心配置示例

news2024/12/25 1:51:00

目录

1、nginx location的详细使用

(1)精确匹配

(2)区分大小写

(3)不区分大小写

(4)匹配文件名后缀

2、nginx下的用户认证

3、nginx自定义错误页面

4、自定义错误日志

5、nginx中的文件检测

6、长链接管理

7、下载服务器的设定及优化

8、nginx的状态页面

10、nginx的数据压缩功能


1、nginx location的详细使用

匹配优先级从高到低:
 ~*    =    ~    >     不带符号    >        ^~        >        =

#语法规则:
location [ = | ~ | ~* | ^~ ] uri { ... }
=       #用于标准uri前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立
即处理请求
^~      #用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对uri的最左边部分做匹配检查,不区分字符大小写
~       #用于标准uri前,表示包含正则表达式,并且区分大小写
~*      #用于标准uri前,表示包含正则表达式,并且不区分大写,
不带符号 #匹配起始于此uri的所有的uri
\       #用于标准uri前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号

(1)精确匹配

vim /usr/local/nginx/conf.d/vhosts.conf

server{
    listen 80;
    server_name www.zx.org;
    root/data/web/html;
    index index.html;
    location = /test {
        root /data/web2;
    }
}

(2)区分大小写

如果访问uri中包含大写字母的ZX,则以下location匹配zx条件不成功,因为 ~ 区分大小写,当用户的请求被执行匹配时发现location中定义的是小写的zx, 本次访问的uri匹配失败,后续要么继续往下匹配其他的location(如果有),要么报错给客户端

vim /usr/local/nginx/conf.d/vhosts.conf

server{
    listen 80;
    server_name www.zx.org;
    root/data/web/html;
    index index.html;
    location / {
        root /data/nginx/zx.org/html;
    }
    location ~ /ZX {
        root /data/nginx/zx.org/zx/html;
    }
    
}

(3)不区分大小写

vim /usr/local/nginx/conf.d/vhosts.conf

server{
    listen 80;
    server_name www.zx.org;
    root/data/web/html;
    index index.html;
    location / {
        root /data/nginx/zx.org/html;
    }
    location ~* /ZX {
        root /data/nginx/zx.org/zx/html;
    }
    
}

(4)匹配文件名后缀

#mkdir -p /webdate/nginx/zx/images
#上传一个图片到/webdate/nginx/zx/images
#vim /usr/local/nginx/conf.d/vhosts.conf

server{
    listen 80;
    server_name www.zx.org;
    
    location / {
        root /webdate/nginx/zx/html;
    }
    location ~* \.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|wmf|js|css)$ {
        root /webdate/nginx/zx/images;
        index index.html
    }
    
}

2、nginx下的用户认证

[root@nginx ~]# htpasswd -cm /usr/local/nginx/.htpasswd admin
[root@nginx ~]# cat /usr/local/nginx/.htpasswd
admin:$apr1$EN0NlJGM$fMDitN/3j045DlVuT3lXT1

[root@nginx ~]# htpasswd -m /usr/local/nginx/.htpasswd zx
New password: 
Re-type new password: 
Adding password for user zx
[root@nginx ~]# cat /usr/local/nginx/.htpasswd
admin:$apr1$EN0NlJGM$fMDitN/3j045DlVuT3lXT1
zx:$apr1$kgGvOH0.$.cnDFi0XkRbE9t9wr/mPA1

[root@nginx ~]# mkdir -p /usr/local/nginx/html/zx/
[root@nginx ~]# echo zx > /usr/local/nginx/html/zx/index.html
[root@nginx ~]# vim /usr/local/nginx/conf.d/vhost.conf 
[root@nginx ~]# cat /usr/local/nginx/conf.d/vhost.conf 
server {
	listen 80;
	server_name www.zx.org;
	root	/usr/local/nginx/html;
	index	index.html;
	location /zx {
		root /usr/local/nginx;
		auth_basic "login password!";
		auth_basic_user_file "/usr/local/nginx/.htpasswd";
	}
}
[root@nginx ~]# nginx -s reload
[root@nginx ~]# nginx -t

3、nginx自定义错误页面

[root@nginx ~]# vim /usr/local/nginx/conf.d/vhost.conf 
[root@nginx ~]# cat /usr/local/nginx/conf.d/vhost.conf 
server {
	listen 80;
	server_name www.zx.org;
	root	/usr/local/nginx/html;
	index	index.html;
	error_page 404 /40x.html;            # 添加
	location /zx {
		root /usr/local/nginx;
		auth_basic "login password!";
		auth_basic_user_file "/usr/local/nginx/.htpasswd";
	}
	
	location = /40x.html {               # 添加
		root /usr/local/nginx/html/errorpage;
	}
}
[root@nginx ~]# mkdir -p /usr/local/nginx/html
[root@nginx ~]# echo error page > /usr/local/nginx/html/40x.html

4、自定义错误日志

[root@nginx ~]# vim /usr/local/nginx/conf.d/vhost.conf 
[root@nginx ~]# mkdir /var/log/zx.org
[root@nginx ~]# cat /usr/local/nginx/conf.d/vhost.conf 
server {
	listen 80;
	server_name www.zx.org;
	root	/usr/local/nginx/html;
	index	index.html;
	error_page 404 /40x.html;
	error_log	/var/log/zx.org/error.log;    #错误日志
	access_log	/var/log/zx.org/access.log;   #访问日志
	location /zx {
		root /usr/local/nginx;
		auth_basic "login password!";
		auth_basic_user_file "/usr/local/nginx/.htpasswd";
	}
	
	location = /40x.html {
		root /usr/local/nginx/html/errorpage;
	}
}

5、nginx中的文件检测

try_files会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内 部500错误。

[root@nginx ~]# mkdir -p /usr/local/nginx/html/
[root@nginx ~]# echo error default > /usr/local/nginx/html/default.html
[root@nginx ~]# cat /usr/local/nginx/conf.d/vhost.conf
server {
	listen 80;
	server_name www.zx.org;
	root	/usr/local/nginx/html;
	index	index.html;
	error_page 404 /40x.html;
	error_log	/var/log/zx.org/error.log;
	access_log	/var/log/zx.org/access.log;
    # 如果不存在页面, 就转到default.html页面
	try_files	$uri $uri.html $uri/index.html /html/default.html;
	location = /40x.html {
		root /data/web/errorpage;
	}
}

6、长链接管理

[root@nginx ~]# dnf install telnet -y    # 测试工具
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf

[root@nginx ~]# telnet www.zx.org 80
Trying 15.197.204.56...
Connected to www.zx.org.
Escape character is '^]'.
GET / HTTP/1.1
HOST: www.zx.org

7、下载服务器的设定及优化

ngx_http_autoindex_module 模块处理以斜杠字符 "/" 结尾的请求,并生成目录列表,可以做为下载服务 配置使用

[root@nginx ~]# mkdir -p /usr/local/nginx/html/download
[root@nginx ~]# dd if=/dev/zero of=/data/web/download/zxfile bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.326466 s, 321 MB/s
[root@nginx ~]# vim /usr/local/nginx/conf.d/vhost.conf
[root@nginx ~]# cat /usr/local/nginx/conf.d/vhost.conf
server {
	listen 80;
	server_name www.zx.org;
	root	/usr/local/nginx/html;
	index	index.html;
	error_log	/var/log/zx.org/error.log;
	access_log	/var/log/zx.org/access.log;
	try_files	$uri $uri.html $uri/index.html /html/default.html;
	location /download {
		root /usr/local/nginx;
		autoindex on;
		autoindex_localtime on;
		autoindex_exact_size off;
		limit_rate 0;
	}
}

8、nginx的状态页面

[root@nginx ~]# nginx -V                # 查看配置
nginx version: nginx/1.24.0
built by gcc 11.3.1 20221121 (Red Hat 11.3.1-4) (GCC) 
built with OpenSSL 3.0.7 1 Nov 2022
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-stream --with-stream_ssl_module

[root@nginx ~]# cd /usr/local/nginx/conf.d/
[root@nginx conf.d]# vim status.conf    
[root@nginx conf.d]# nginx -s reload
[root@nginx conf.d]# vim /etc/hosts
[root@nginx ~]# nginx -V
nginx version: nginx/1.24.0
built by gcc 11.3.1 20221121 (Red Hat 11.3.1-4) (GCC) 
built with OpenSSL 3.0.7 1 Nov 2022
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-stream --with-stream_ssl_module
[root@nginx ~]# 
[root@nginx ~]# 
[root@nginx ~]# cd /usr/local/nginx/conf.d/

[root@nginx conf.d]# vim status.conf
[root@nginx conf.d]# nginx -s reload
[root@nginx conf.d]# vim /etc/hosts    # 添加域名解析


[root@nginx ~]# cat /usr/local/nginx/conf.d/status.conf
server {
	listen 80;
	server_name	status.zx.org;
	root	/usr/local/nginx/html;
	index	index.html;

	location	/status	{
		stub_status;
		#auth_basic	"login"
		#auth_basic_user_file	"usr/local/nginx/.htpasswd"
		allow 172.25.254.1;
		deny all;
	}
}
[root@nginx ~]# vim /etc/hosts
[root@nginx ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.100	nginx.zx.org	www.zx.org	status.zx.org

10、nginx的数据压缩功能

Nginx支持对指定类型的文件进行压缩然后再传输给客户端,而且压缩还可以设置压缩比例,压缩后的文件大小将比源文件显著变小,样有助于降低出口带宽的利用率,降低企业的IT支出,不过会占用相应的CPU资源。

Nginx对文件的压缩功能是依赖于模块 ngx_http_gzip_module,默认是内置模块

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf

gzip  on;
    gzip_comp_level 5;
    gzip_min_length 1k;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/gif image/png;

[root@nginx ~]# echo hello zx > /data/web/html/small.html
[root@nginx ~]# cat /usr/local/nginx/logs/access.log > /data/web/html/big.html
[root@nginx ~]# curl --head --compressed 172.25.254.100/small.html
[root@nginx ~]# curl --head --compressed 172.25.254.100/big.html

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

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

相关文章

Scrapy框架进阶攻略:代理设置、请求优化及链家网实战项目全解析

scrapy框架 加代理 付费代理IP池 middlewares.py # 代理IP池 class ProxyMiddleware(object):proxypool_url http://127.0.0.1:5555/randomlogger logging.getLogger(middlewares.proxy)async def process_request(self, request, spider):async with aiohttp.ClientSess…

【乐吾乐大屏可视化组态编辑器】状态切换

状态切换 开关状态 开关的断开和闭合。可以拖拽国家电网图库中的“开”与“关”两个组件,选中对齐重叠在一起后,右键选择“组合为状态”,在“外观”面板可以任意切换状态。 想实现点击开关图元就可以切换开关状态,可以选中图元添…

基于 springboot 2 和 vue 3 的 博客论坛系统

1. 网站信息 博客论坛系统:http://106.53.164.141:8200 本网站是 基于 SpringBootVue 前后端分离的博客论坛系统 前台用户:注册登录;博客和活动相关的展示、浏览、点赞、收藏、评论、编辑等功能 后台管理员:管理公告、博客、活…

日撸Java三百行(day25:栈实现二叉树深度遍历之中序遍历)

目录 一、栈实现二叉树遍历的可行性 二、由递归推出栈如何实现中序遍历 1.左子树入栈 2.根结点出栈 3.右子树入栈 4.实例说明 三、代码实现 总结 一、栈实现二叉树遍历的可行性 在日撸Java三百行(day16:递归)中,我们讲过…

Debian 12 基于KubeAdm搭建多节点K8S 1.28.x集群

背景 CentOS 7 官方支持和更新已于2024年6月30日结束。这意味着CentOS 7 不再接受官方的更新和补丁。并且官方推荐用户迁移到新的操作系统;而转移到Debian的优势有: 更加成熟的软件包管理系统:Debian 的包管理系统是 APT(Advanc…

cleanmymacx官网2024中文官方地址

大家好,我是你们的科技小助手。今天来跟大家聊聊一款非常神奇的产品——cleanmymacx。这是一款Mac专用的系统优化工具,最近刚刚更新了新功能哦!你们是不是经常觉得电脑越来越慢,硬盘空间不足,但又不知道该删除什么文件…

机器学习系列—深入探索弗里德曼检验:非参数统计分析的利器

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

滴滴开源新项目Unify:聚焦Flutter与原生通信难题,助力跨端应用落地

引言 在移动开发领域,移动跨端技术因其提效收益,逐渐成为业界趋势之一。Flutter 作为近年来热门的跨端技术,以高性能、自渲染、泛跨端著称,得到广泛应用。在滴滴国际化业务中,我们大量应用 Flutter。目前已在滴滴国际化…

Sentinel集成Apollo持久化配置的技术方案

作者本人,简放视野 https://github.com/bert82503 背景 Sentinel 介绍 Sentinel 是流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性…

拥有一个公网固定IP,既然如此简单、HTTP 虚拟专线:为您开启专属网络访问新时代

#HTTP 虚拟专线# 网络的便捷性和稳定性对于个人和企业来说至关重要。我们自豪地为您介绍一款具有创新性的产品 ——HTTP 虚拟专线,它将为您的网络体验带来前所未有的改变。 每位 VHTTP 用户都将分配一个专属的固定公网 IP 地址,这意味着您不再需要担心 I…

【视频监控】通过TCP协议搭建客户端和服务端使用OpenCV实现Linux开发板摄像头图像实时回传本地

一. 前言 本文主要实现了远程开发板摄像头画面实时传输回本地电脑进而达到视频监控功能。主要分为开发板客户端和电脑服务端的两部分代码讲解。 本文使用的是米尔的Remi Pi开发板,摄像头是米尔配套的MY-CAM003M,开发板Python环境为3.8,电脑…

Java的jdk配置成功,但是输入java -version等,命令行没有任何反应

问题 Java下载后,手动配置环境变量,并且配置好,但是在命令行中无论输入java的什么都没有反应 解决方案 将手动配置的环境变量放到最前面 重新尝试 java -version命令

C++模板的特化

目录 一、模板特化概念 二、函数模板特化 三、类模板特化 1.全特化 2.偏特化 3.总结 4.类模板特化实例应用 一、模板特化概念 函数模板和类模板都有特化: 通常情况下使用模板可以实现一些与类型无关的代码,但一些特殊类型可能会出错,…

报错:Can‘t find Python executable “python“, you can set the PYTHON env variable

将项目导入vscode,执行npm install命令后,报错了,报错的信息是node-sass安装失败,同时提示需要python环境的错误信息,这是因为安装node-sass失败了,而node-sass依赖于Python环境。 1.报错:Cant find Python…

基于Hadoop的微博社交媒体用户大数据分析【海量数据】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍数据集展示Hadoop脚本文件可视化展示每文一语 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 项目介绍 本项目基于hadoop的社交媒体用户进行大数据…

把照片制作成精美的仿真电子相册

​在这个数字化时代,我们拍摄的照片越来越多,但往往缺乏一个合适的方式来展示和保存这些珍贵的回忆。今天,我将向大家介绍如何将你的照片制作成一个精美的仿真电子相册,让你的回忆更加生动和持久。 第一步:选择合适的照…

FreeRTOS 3

一,信号量 有时候任务之间传递的只是一个标致,让进程之间同步,会对一个共享资源的互斥性访问,这时候就可以用信号量和互斥量。 1,二值信号量 2,计数信号量 3,互斥量 3.1,差别 4&…

Orangepi 5 Pro(香橙派5pro)部署yolov5

前言 香橙派内置了6T算力的NPU,想着可以跑一下yolov5,看看香橙派的速度如何。 在开始部署之前,需要具备一定的linux技能——vim、linux常见指令、conda等等。如果没有这些技能的话,做下去会有一定的难度,可以先看几遍了…

19.实现一个算法实现删除链表中倒数第 n 个结点

19. Remove Nth Node From End of List 题目 Given the head of a linked list, remove the nth node from the end of the list and return its head. Follow up: Could you do this in one pass? Example 1: Input: head = [1,2,3,4,5], n = 2 Output: [1,2,3,5]Example…

蚂蚁AL1 15.6T 创新科技的新典范

● 哈希率:算力达到15.6T(相当于15600G),即每秒能够进行15.6万亿次哈希计算,在同类产品中算力较为出色,能提高WA掘效率。 ● 功耗:功耗为3510W,虽然数值看似不低,但结合其…