nginx.conf配置参数解析

nginx配置文件解析

/usr/local/nginx/conf

vim  /etc/security/limits.conf
#配置生效只能重新启动*  soft   nproc   65535   
#能打开的进程最大数是软限制655335,65535是最大值
*  hard  nproc  65535 
*  soft  nofile  65535
# 进程打开文件数的最大值65535 
* hard nofile 65535 

#转发和处理http请求http请求,设置代理(正代理,反向代理),缓存,定义日志格式,重定>向配置

[root@test2 conf]#vim nginx.conf
1、全局模块
worker_processes  1;
工作进程数,设置为服务器内核数的2倍(一般不超过8个,超过8个会降低性能 一般为4个 1-2个)events {worker_connections  1024;
}
#events模块,决定了nginx能够处理的连接数,连接数和worker_processes的数值相乘处理进程的过程必然涉及配置文件和展示页面,也就是涉及打开文件的数量。
Linux默认打开的文件数,默认是1024include       mime.types;#文件扩展名于文件类型的映射表。nginx能够打开的文件和支持的文件类型default_type  application/octet-stream;#默认支持的文件类型 .html .htm  .jps  .js  .php#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,访问日志的格式error.log也是一样的格式#access_log  logs/access.log  main;#默认的访问日志的存放路径sendfile        on;#支持文件发送和文件下载#tcp_nopush     on;#默认就是异步非阻塞模式keepalive_timeout  65;#连接保持的时间  65秒#gzip  on;
#gzip模块,设置是否开启页面压缩#server模块的作用:开启外部服务的模块server {listen       80;#nginx的默认监听端口server_name  localhost;#配置站点的域名#charset koi8-r;#网页默认字符集#location是网页匹配的工作目录地址和支持打开页面的文件类型location / {root   html;#家目录  nginx默认工作目录的家目录  /usr/local/nginx/html#alias 也是指匹配nginx的工作目录#root是拼接,工作目录与访问路径拼接  alisa是绝对路径index  index.html index.htm;}
#统计访问模块#  location /status {#   sdut_stattus on;# 打开计数服务#   access_log off;#关闭access_log日志# }
[root@test2 conf]# #基于密码的授权进行访问控制      
[root@test2 conf]# yum -y install  httpd-tools
[root@test2 conf]# htpasswd -c /usr/local/nginx/passwd.db flq
New password: 
Re-type new password: 
Adding password for user flq
[root@test2 nginx]# chown nginx passwd.db 
[root@test2 nginx]# chmod 400 passwd.db 
[root@test2 nginx]# pwd
/usr/local/nginx
[root@test2 conf]# pwd
/usr/local/nginx/conf
[root@test2 conf]# vim nginx.conf    location / {root   html;index  index.html index.htm;auth_basic "secret";#开启用户密码验证auth_basic_user_file /usr/local/nginx/passwd.db;#使用指定的加密文件}
[root@test2 conf]# #基于客户端的访问控制
[root@test2 conf]# vim nginx.conf
location / {root   html;#添加控制规则deny  192.168.11.138/192.168.11.139;# deny  192.168.11.0/24;allow all;}
[root@test2 conf]# #基于域名的nginx主机
[root@test2 conf]# vim nginx.confserver {listen       80;#nginx的默认监听端口server_name  www.xy102.com;#配置站点的域名charset utf-8;access_log logs/www.xy102.com.access.log;#新增一个域名访问server {listen       80;server_name www.flq.com;charset utf-8;access_log logs/www.flq.com.access.log;location / {root /var/www/html/flq;index index.html;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}[root@test2 conf]# vim /etc/hosts   #给ip地址映射域名 
192.168.11.137  www.xy102.com www.flq.com[root@test2 conf]# mkdir -p /var/www/html/flq
[root@test2 conf]# echo "牛啊" > /var/www/html/flq/index.html
[root@test2 conf]# curl www.xy102.com   # 测试nginx原本你的页面
[root@test2 conf]# curl www.flq.com
牛啊
[root@test2 conf]# #基于IP地址的访问
[root@test2 conf]# ifconfig ens33:0 192.168.11.199/24    #新增新的虚拟网卡
[root@test2 conf]# vim nginx.conf#给每个服务设置其对应的ip地址
server {listen       192.168.11.137:80;server_name  www.xy102.com;charset utf-8;access_log logs/www.xy102.com.access.log;location / {root   html;index  index.html index.htm;}server {listen   192.168.11.199:80;server_name www.flq.com;charset utf-8;access_log logs/www.flq.com.access.log;location / {root /var/www/html/flq;index index.html;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}[root@test2 conf]# nginx -t    #检查语法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@test2 conf]# systemctl restart nginx    #重启服务
#测试
[root@test2 conf]# curl 192.168.11.199:80
牛啊
[root@test2 conf]# curl 192.168.11.137:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width:
[root@test2 conf]#  #基于端口实现多个虚拟主机
[root@test2 conf]# vim nginx.conf
#给每个服务设置其对应的端口
server {listen       192.168.11.137:80;server_name  www.xy102.com;charset utf-8;access_log logs/www.xy102.com.access.log;location / {root   html;index  index.html index.htm;}server {listen   192.168.11.199:80;server_name www.flq.com;charset utf-8;access_log logs/www.flq.com.access.log;location / {root /var/www/html/flq;index index.html;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
[root@test2 conf]# nginx -t    #检查语法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@test2 conf]# systemctl restart nginx   #重启服务
[root@test2 conf]# curl 192.168.11.199:6666
牛啊
[root@test2 conf]# curl 192.168.11.137:8888
nginx默认HTML页面
配置多个虚拟主机域名访问
[root@test2 conf]# vim nginx.conf
http {include       mime.types;include    /usr/local/nginx/conf.d/*.conf; 
# 可以识别到conf.d下,只包含server模块的conf的文件default_type  application/octet-stream;server_tokens off;
#    关闭版本号sendfile        on;#支持文件发送和文件下载keepalive_timeout  65;#连接保持的时间
}

root的匹配模式 拼接
root的工作目录 访问的url /xy102
location /xy102
/opt/test1
/opt/test1/xy102/
root可以卸载server模块中,也可以在http,也可以在location中

alias匹配的nginx的工作目录,路径是绝对路径
location /xy102
alias /opt/test1/xy102/;
alias 只能写在http模块中server模块中的location模块里面。

alias匹配工作目录,不能够使用重定向功能。

总结:
1、全局模块
worker_processes  1;   指定进程数
evens 模块决定能够处理的连接数
stream 四层代理模块
http模块
转发和处理http请求,设置代理(正向代理,反向代理),缓存,定义日志格式,
重定向配置,
在http模块当中,包含:
server块 http里面可以有多个server模块
在server模块当中包含:
location模块
在server当中可以有多个location

在这里插入图片描述

Active connections
当前活动的连接数
server accepts handled requests:表示已经处理的连接数
三个数字,从左往右:已经处理的连接数,成功的建立连接的次数已经处理的请求数
Reading: 0 Writing: 1 Waiting: 0
reading 表示服务端正在从客户端读取请求的数据
writing 表示服务端正在把响应数据发送给客户端
waiting  表示有连接处于空闲状态,等待新的请求

nginx优化和防盗链

[root@test2 conf]# #设置页面缓存时间,主要针对动态页面,图片缓存时间apache是自带日志分割的,按天来进行收集日志  access.log   error-2024'
date -d "-1 day" "+%Y%m%d"[root@test2 conf]# vim nginx.conf#location ~ \.(gif|jpg|png)${#root html;#设置图片缓存时间#expires 1d;
#}
[root@test2 logs]# #更改进程数已经CPU绑定
worker_processes  2;
#表示进程有2个,这里和CPU数挂钩,不绑定CPU的花,进程可能会在两个CPU之间来回切换,资
源浪费
worker_cpu_affinity 0001 0010  0100  1000;
#绑定CPUkeepalive_timeout  65;#请求完成之后的连接保持的时间
client_header_timeout 80;
#客户端发送一个完整的请求头的超时时间,80秒之内没有发送一个完整的请求头,nginx返回>码408(request time out)
client_body_timeout 80;#客户端和服务端建立连接之后,发送请求体的超时时间,客户端在80秒内没有发送任何内容,nginx返回>码408gzip  on;#配置页面压缩#gzip模块,设置是否开启页面压缩gzip_min_length 1k;#最小的压缩文件,效益等于1k的文件就不压缩了gzip_buffers 4 64k;##设置压缩的缓冲区,4个,每个缓冲区的大小64Kgzip_comp_level 6;#压缩比例1-9,数字越小,压缩比例越小,速度越快,数字越大,压缩比例就越高,速度越慢回收TIME_WAIT:
TIME_WAIT(不是报错,四次挥手之后会进入TIME_WAIT状态)
TIME_WAIT是tcp连接当中的一种状态,出现在四次挥手之后
处于等待状态,双方不再发送数据
time_wait所含的系统资源很小,数量比较少,完全可以忽略不计
但是太多了,就会一定的影响
连接断开(四次挥手)之后,尽快的把time_wait状态的连接进行回收netstat -n | awk '/^tcp/' {++s[$NF]} END {for (a in s)print a s[a]}
统计当前系统连接状态总结:
隐藏版本号
日志分割
CPU绑定
连接超时
页面压缩
页面缓存时间
time_wait状态回收*
[root@test2 conf]#vim /etc/sysctl.conf           net.ipv4.tcp_synvookies=1
#防止tcp的半连接队列溢出,可以达到服务端在收到tcp的syn(同步)的请求时能够快速响应
net.ipv4.tcp_tw_reuse=1
#允许复用time——wait状态的连接,新的连接可以直接使用time_wait的状态的端口,可以提高连接的重用率
net.ipv4.tcp_tw_recycle=1
#这个是老版本的配置,时间戳的戳记进行连接复用
net.ipv4.tcp_fin_timeout=30
##控制time_wait状态的持续时间,持续30秒,不是立即把time_wait的连接收回,而是尽可能的把time_wait状态的进行回收,没用的,空闲的,进行回收[root@test2 conf]# sysctl -p  #立即生效

防盗链

[root@test2 conf]# vim nginx.conf
location ~* \.(gif|jpg)$ {#当识别的图片为png时不需要加入到判断中valid_referers none blocked *.xy102.com xy102.com;#允许xy102.com的网址访问图片,if ( $invalid_referer ) {rewrite ^/ http://www.xy102.com/error.png;#如果不是xy102访问,一律跳转到盗链的提示。}}
[root@test2 conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@test2 conf]# systemctl restart nginx
[root@test2 conf]# cd ..
[root@test2 nginx]# cd html/
[root@test2 html]# pwd
/usr/local/nginx/html
[root@test2 html]# vim index.html 
[root@test2 html]# echo 192.168.11.137 www.xy102.com >> /etc/hosts
[root@test2 html]# echo 192.168.11.138 www.xy103.com >> /etc/hosts
[root@test2 html]# systemctl restart nginx
[root@test2 html]# vim index.html 
<img src="111.png">
</body>
</html>
~           

nginx
[root@test2 conf]# cd …
[root@test2 nginx]# cd html/
[root@test2 html]# pwd
/usr/local/nginx/html
[root@test2 html]# vim index.html
[root@test2 html]# echo 192.168.11.137 www.xy102.com >> /etc/hosts
[root@test2 html]# echo 192.168.11.138 www.xy103.com >> /etc/hosts
[root@test2 html]# systemctl restart nginx
[root@test2 html]# vim index.html

~ ```

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

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

相关文章

ExtendSim在商业和服务行业中的仿真

仿真使企业能够做出明智的、数据驱动的预测&#xff0c;从而指导决策、产生积极成果并建立竞争优势。 精益分析 使用 ExtendSim 中的精益分析方法对欧洲的供应链网络进行建模&#xff0c;一家制造商实现了对最终客户的服务水平提高了 98%&#xff0c;而且现在可以在库存减少约 …

python 实现docx指定语言翻译(不丢失格式)

我这边有个需求需要把一份docx翻译成指定语言的文档并且保存&#xff0c;研究了下&#xff0c;记录。 首先先安装依赖 pip install python-docx1.1.2 googletrans4.0.0rc1 python-docx是用来读取docx的&#xff0c;googletrans使用来翻译的。 googletrans PyPI 这个是官方文…

用Vue3和Rough.js绘制一个交互式3D图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 基于Rough.js和GSAP创建交互式SVG图形卡片 应用场景 本代码适用于需要创建动态交互式SVG图形卡片的场景&#xff0c;例如网页设计、数据可视化和交互式艺术作品。 基本功能 该代码利用Rough.js和GSAP库&…

前端学习(五)CSS浮动与补白

目录&#xff1a; 内容&#xff1a; //设置左右浮动 .left{float:left; } .right{float:right; } /*必须设置不同浮动*/ //创建div <div> <dic class"left">左边</div> <div class"right">右边</div> </div> //设置浮…

地铁车厢火灾3D模拟逃生演习减少了资源损耗和风险

在消防安全领域&#xff0c;为了更好地提升安全实训效果&#xff0c;我们在VR安全培训领域打造了多款消防安全VR模拟实训系统&#xff0c;不仅实现了与现实世界无异的交互操作&#xff0c;更在虚拟空间中超越了现实的限制&#xff0c;模拟出那些现实中难以搭建的复杂场景。 利用…

mysql:部署MySQL 8.0 环境

mysql网址&#xff1a;MySQL 点击 MySQL Community Server 选择合适的版本 选择8.0版本 下载完成&#xff0c;点击mysql-installer-community-8.0.26.0.msi文件&#xff0c;打开安装向导。 选择自定义安装类型 打开“Select Products” 窗口&#xff0c;可以定制需要安装的产…

成都晨持绪:开一家抖音网店到底能不能赚钱

在数字化时代的浪潮中&#xff0c;抖音以其独特的魅力迅速占领了社交媒体的舞台。众多创业者纷纷把目光投向这个新兴平台&#xff0c;企图在短视频的海洋里找到属于自己的财富岛屿。但是&#xff0c;开一家抖音网店到底能不能赚钱呢? 我们要认识到&#xff0c;抖音作为一个流量…

lt6911UXC 国产原装 高性能HDMI2.0转MIPI DSI / CSI芯片方案 提供LT 开发资料包及在线软硬件技术支持!

1.说明 LT6911UXC是一款高性能HDMI2.0到MIPI DSI / CSI转换器&#xff0c;用于VR&#xff0c;智能电话&#xff0c;显示应用。 HDMI2.0输入支持高达6Gbps的数据速率&#xff0c;从而为4k 60Hz视频提供足够的带宽。还支持HDCP2.2进行数据解密。 对于MIPI DSI / CSI输出&#xf…

【路由交换技术】Cisco Packet Tracer基础入门教程(五)

这一期我们来学习端口聚合&#xff0c;这是针对交换机的技术 前言 不知道大家有没有注意到&#xff0c;我们之前的实验在交换机与交换机之间只用一条线连接&#xff0c;像这样 通过今天的学习&#xff0c;我们要用两条线来连接交换机&#xff0c;就像这样&#xff08;为了能…

人力资源中的人工智能:你应该知道的一切

人工智能已经成为行业讨论更广泛的突出话题。人力资源(HR)对于人力资源专业人士来说&#xff0c;了解这门课程也是如此。除了简要介绍什么是人工智能&#xff0c;以及你可能遇到的主要人工智能类型(或者你可能很快就会遇到它&#xff01;)此外&#xff0c;本文还将探讨人工智能…

并发控制-事务的调度、数据不一致问题(更新丢失、脏读、不可重复读)、非串行调度的的可串行化

一、引言 1、数据库管理系统DBMS的事务处理技术实现的另一个主要功能部分是并发控制机制。并发控制机制完成的功能就是对并发执行的事务进行控制&#xff0c;保证事务的隔离性&#xff0c;从而进一步保持数据库的一致性。 2、事务的并发控制就是对并发执行的不同事务中的数据…

Java基础:爬虫

1.本地爬虫 Pattern:表示正则表达式 Matcher:文本匹配器&#xff0c;作用按照正则表达式的规则去读取字符串&#xff0c;从头开始读取。在大串中去找符合匹配规则的子串。 1.2.获取Pattern对象 通过Pattern p Pattern.compile("正则表达式");获得 1.3.…

【安全攻防】网络安全中的序列化与反序列

1.序列化与反序列化 首先要了解序列化与反序列化的定义&#xff0c;以及序列化反序列化所用到的基本函数。 序列化&#xff1a;把对象转换为字节序列的过程称为对象的序列化&#xff0c;相当于游戏中的存档。 PHP中的序列化函数serialize() **serialize()**函数用于序列化对…

VScode使用ssh连接服务器

VScode是一款有丰富插件的编译器&#xff0c;非常好用&#xff01;除非你不会用&#xff0c;因为太过繁琐或着频繁出错导致想把电脑砸了&#xff1b; 插件选择 ssh 配置文件 Host myblablaHostName xxx.xx.xxx.xxxUser username用户名一般是服务器上创建有什么用户名&#xf…

【Vue】使用html、css实现鱼骨组件

文章目录 组件测试案例预览图 组件 <template><div class"context"><div class"top"><div class"label-context"><div class"label" v-for"(item, index) in value" :key"index">…

深入探讨JavaScript中的队列,结合leetcode全面解读

前言 队列作为一种基本的数据结构&#xff0c;为解决许多实际问题提供了有效的组织和处理方式&#xff0c;对于提高系统的稳定性、可靠性和效率具有重要作用&#xff0c;所以理解队列是很重要的。 本文深入探讨JavaScript中的队列这种数据结构,结合leetcode题目讲解 题目直达…

DolphinScheduler部署安装or基础介绍(一)

DolphinScheduler概述 Apache DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系&#xff0c;使调度系统在数据处理流程中开箱即用 DolphinScheduler核心架构 DolphinScheduler的主要角色如下&#xff1a; Ma…

2024攻防演练:亚信安全推出MSS/SaaS短期定制服务

随着2024年攻防演练周期延长的消息不断传出&#xff0c;各参与方将面临前所未有的挑战。面对强大的攻击队伍和日益严格的监管压力&#xff0c;防守单位必须提前进行全面而周密的准备和部署。为应对这一形势&#xff0c;亚信安全特别推出了为期三个月的MSS/SaaS短期订阅方案。该…

一站式配套,全方位服务升级——全力打造企业新家园

国际数字影像产业园通过完善配套设施和优化服务&#xff0c;为入园企业提供了高效、便捷、专业的服务支持&#xff0c;助力企业实现快速发展和转型升级。同时&#xff0c;园区的数字化和智能化发展策略也为整个数字影像产业的繁荣发展提供了有力支撑。 一、完善配套设施 1、高…

程序包lombok不存在,解决办法。

当前方法是针对于代码没有报错&#xff0c;本身有lombok jar包的情况 1.找到本地maven仓库中的已经下载好的lombok包&#xff0c;删掉。 2. 直接刷新maven&#xff0c;会重新下载lombok jar包&#xff0c;此时再启动项目时就可以正常运行了。