Nginx网站服务详解(Nginx服务的主配置文件 ——nginx.conf)

目录

一、全局配置的六个模块简介

二、Nginx配置文件的详解

1)全局配置模块

 2)I/O 事件配置 

3)HTTP 配置 

4)web服务监听设置

5)其他设置

location常见配置指令:“root、alias、proxy_pass

对比: 

当设置  location /test{     },alias /var/www/html  和   root /var/www/html  有什么区别?

三、访问状态统计与控制

1)访问状态统计

①查看访问统计配置的相关模块 

②修改主配置文件,添加访问状态统计模块 

事例:用脚本一键查询并发量

2)基于授权的访问控制

①生成用户密码认证文件

②修改主配

 ③重启服务,进行访问测试

3)基于客户端的访问控制

四、Nginx的虚拟主机设置 

1)基于域名的虚拟主机

①域名准备和网页准备

②主配置文件的修改

③重启服务,访问测试 

2)基于IP 的 Nginx 虚拟主机

①设置虚拟主机IP 

②修改主配置文件

③重启服务,访问测试 

3)基于端口的 Nginx 虚拟主机

①修改主配置文件

②重启服务,测试访问测试 


一、全局配置的六个模块简介

  • 全局块:全局配置,对全局生效

  • events块:配置影响 Nginx 服务器与用户的网络连接

  • http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置

  • server块:配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块

  • location块:用于配置匹配的 uri

  • upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分

注意:location 匹配的内容来源是来自网页的URI,而不是URL(URL代表整个链接如:www.baidu.com/images/search,而URI则是/images/search。所以nginx的location匹配的是URI) 

二、Nginx配置文件的详解

1)全局配置模块

就是配置文件从头开始到 events 块之间的内容,主要设置的是影响nginx服务器整体运行的配置指令。比如 worker_process,值越大,可以支持的并发处理量也越多,但是还是和服务器的硬件相关

vim /usr/local/nginx/conf/nginx.conf 

 2)I/O 事件配置 

#如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数

永久修改的方式:

[root@localhost init.d]#vim /etc/security/limits.conf 

注意:软硬件的事件处理都要设置才能生效,并且保存退出后,要重新连接查看才会生效

#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。#可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。#epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。(实现异步非阻塞)

3)HTTP 配置 

4)web服务监听设置

5)其他设置

日志格式设定:
$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址
$remote_user:用来记录客户端用户名称
$time_local: 用来记录访问时间与时区
$request: 用来记录请求的url与http协议
$status: 用来记录请求状态;成功是200
$body_bytes_sent :记录发送给客户端文件主体内容大小
$http_referer:用来记录从哪个页面链接访问过来的
$http_user_agent:记录客户浏览器的相关信息

通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址


location常见配置指令:“root、alias、proxy_pass

  • root(根路径配置):root /var/www/html

请求www.kgc.com/test/1.html,会返回文件/var/www/html/test/1.html

  • alias(别名配置):alias /var/www/html

请求www.yang.com/test/1.html,会返回文件/var/www/html/1.html


对比: 

当设置  location /test{     },alias /var/www/html  和   root /var/www/html  有什么区别?

  • alias是别名设置,将设置的网页放在/var/www/html下,访问
  • root 是根目录设置 ,将设置的网页放在 /var/www/html/test 下,访问

proxy_pass(反向代理配置)

三、访问状态统计与控制

1)访问状态统计

①查看访问统计配置的相关模块 

cat /opt/nginx-1.22.0/auto/options | grep YES   #可查看 nginx 已安装的所有模块

[root@localhost ~]#/usr/local/nginx/sbin/nginx -V
查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块

②修改主配置文件,添加访问状态统计模块 

#主配置备份,防止设置错误,无法还原
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak

修改主配配置操作:

vim /usr/local/nginx/conf/nginx.confserver {listen       80;server_name  www.yang.com;charset utf-8;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}location /status {stub_status on;access_log off;}

重启nginx服务,访问测试:

除此之外:还可以 curl -Ls http://192.168.73.105/status 结合 awk与if 语句进行性能监控

事例:用脚本一键查询并发量

要求:每10秒获取并发量大于2时,发送预警

[root@bogon ~]# vim a.sh#!/bin/bashwhile true
do
#筛选静态状态的第三部分
a=$(curl -Ls 192.168.231.102/status | awk '/Active connections/{print $3}')if [ $a -gt 2 ];thenecho "警报!当前并发连续过高!当前并发数为:$a"
fisleep 10   #睡眠10秒
done
~      

用另一台虚拟机登录访问,后运行脚本

#查看并发连接数的另一种方法
netstat/ss -natp | grep nginx | grep -c ESTABLISHED

2)基于授权的访问控制

①生成用户密码认证文件

yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zhangsan
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

②修改主配

vim /usr/local/nginx/conf/nginx.confserver {location / {......##添加认证配置##auth_basic "secret";				#设置密码提示框文字信息auth_basic_user_file /usr/local/nginx/passwd.db;}}

 ③重启服务,进行访问测试

3)基于客户端的访问控制

设置方式类似于黑白名单

设置前的访问,其他主机访问测试:

访问控制规则如下:

deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问
规则从上往下执行,如匹配则停止,不再往下匹配
vim /usr/local/nginx/conf/nginx.conf
......server {location / {......##添加控制规则##allow 192.168.73.105;                     #允许访问的客户端 IPdeny all;                                #拒绝其它IP客户端访问}}

设置后的访问测试:

四、Nginx的虚拟主机设置 

相比较Apache的虚拟主机设置,Nginx的设置是十分简便的只需要修改主配置中的相关配置就能实现虚拟主机的效果

1)基于域名的虚拟主机

①域名准备和网页准备

[root@localhost conf]#echo "192.168.73.105 www.test1.com www.test2.com" >> /etc/hosts
[root@localhost conf]#mkdir -p /var/www/html/test1
[root@localhost conf]#mkdir -p /var/www/html/test2
[root@localhost conf]#echo "<h1>this is  test1</h1>" > /var/www/html/test1/index.html
[root@localhost conf]#echo "<h1>this is  test2</h1>" > /var/www/html/test2/index.html

②主配置文件的修改

vim /usr/local/nginx/conf/nginx.conf
http {
...... 
server {listen 80;server_name  www.test1.com;charset utf-8;access_log  logs/www.test1.access.log;location / {root /var/www/html/test1;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}server {listen       80;server_name  www.test2.com;charset utf-8;access_log  logs/www.test2.access.log;location / {root /var/www/html/test2;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
..............}
}

③重启服务,访问测试 

2)基于IP 的 Nginx 虚拟主机

①设置虚拟主机IP 

[root@localhost conf]#ifconfig ens33:0 192.168.73.200/24
[root@localhost conf]#ifconfig ens33:0 

②修改主配置文件

vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 192.168.73.105:80;server_name  www.test1.com;charset utf-8;access_log  logs/www.test1.access.log;location / {root /var/www/html/test1;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}server {listen 192.168.73.200:80;server_name  www.test2.com;charset utf-8;access_log  logs/www.test2.access.log;location / {root /var/www/html/test2;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}
..........
}

③重启服务,访问测试 

3)基于端口的 Nginx 虚拟主机

①修改主配置文件

[root@localhost conf]#vim /usr/local/nginx/conf/nginx.conf......
http {
......server {listen 192.168.73.105:666;server_name  www.test1.com;charset utf-8;access_log  logs/www.test1.access.log;location / {root /var/www/html/test1;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}server {listen 192.168.73.105:888;server_name  www.test2.com;charset utf-8;access_log  logs/www.test2.access.log;location / {root /var/www/html/test2;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}
..........
}

②重启服务,测试访问测试 

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

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

相关文章

【数据分享】2019-2023年我国地级市逐年新房房价数据(免费获取/Excel/Shp格式)

房价是一个城市发展程度的重要体现&#xff0c;一个城市的房价越高通常代表这个城市越发达&#xff0c;对于人口的吸引力越大&#xff01;因此&#xff0c;房价数据是我们在各项城市研究中都非常常用的数据&#xff01;之前我们分享了2019—2023年我国地级市逐月的新房房价数据…

揭秘`v-if`和`v-show`的区别:选择正确指令的技巧(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

EasyExcel模板导出(行和列自动合并)

1.需求背景: ①需要从第三方获取数据,第三方接口有两个参数,开始时间和结束时间 ②获取回来的数据并没有入库,所以不能通过数据库将数据归类统计,excel合并大概的流程是判断上一行或者左右相邻列是否相同,然后进行合并,所以不能是零散的数据且客户要求每一个自治区和每一个航站…

系统分析师(软考)知识点整理(一)

第一章 信息 信息是不确定性的减少 xi: n个状态中的第i个状态p(xi):出现第i个状态的概率b: b一般取值为2 特征 #mermaid-svg-pvPkY9RE5GZIIIxl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-pvPkY9RE5GZIIIxl…

基本数据类型与 字符串相加的 知识点

在Java中&#xff0c;基本数据类型和字符串的相加操作会触发字符串连接&#xff08;concatenation&#xff09;操作。这是因为Java中的字符串是不可变的&#xff0c;即一旦创建&#xff0c;就不能修改。因此&#xff0c;当你将一个基本数据类型的值与字符串相加时&#xff0c;J…

系统学习Python——装饰器:基础知识-[函数装饰器:使用方法]

分类目录&#xff1a;《系统学习Python》总目录 函数装饰器已经从Python2.4开始可用。正如我们在前文所见到的&#xff0c;它们大体上是一种语法糖&#xff1a;在def语句结束时通过另一个函数来运行这个函数&#xff0c;把最初的函数名重新绑定到返回的结果。 函数装饰器是一种…

一篇文章带你了解各个程序员接单平台,让你选择不再迷茫!!!

相信现在很多程序员都已经走上了或者准备走上网上接单这条路&#xff0c;但是目前市面上的接单平台可谓五花八门&#xff0c;对于各个平台的优缺点&#xff0c;不同的程序员该如何选择适合自己的接单平台&#xff0c;你又是否了解呢&#xff1f; 接下来就让小编用一篇文章来为…

js对象转换为excel,excel转换为js对象

文章目录 前言js转excelexcel转js对象总结 前言 使用module.exports导出&#xff0c;require导入 修改后缀为mjs,可使用importd导入 &#xff0c;export default \export导出&#xff08;自用过一次&#xff0c;后面忘记怎么改的了&#xff09; js转excel 需要安装nodejs node …

Gemini自曝中文用百度文心一言训练,网友看呆:大公司互薅羊毛??

谷歌Gemini中文语料疑似来自文心一言&#xff1f;&#xff1f;&#xff1f; 先是有读者向我们爆料&#xff1a; 在谷歌Vertex AI平台使用该模型进行中文对话时&#xff0c;Gemini-Pro直接表示自己是百度语言大模型。 很快&#xff0c;有微博大V阑夕夜也发博称&#xff1a; 在…

超实用的Web兼容性测试经验总结,建议Mark

在日常工作中&#xff0c;我们经常碰到网页不兼容的问题。我们之所以要做兼容性测试&#xff0c;目的在于保证待测试项目在不同的操作系统平台上正常运行。 主要包括待测试项目能在同一操作系统平台的不同版本上正常运行&#xff1b;待测试项目能与相关的其他软件或系统的“和…

pip install xxx时候遇到Read timed out的问题

我们在安装一些包的时候&#xff0c;比如TensorFlow等等&#xff0c;如果直接使用: pip install tensorflow 这句命令来进行安装的时候&#xff0c;我们会发现此时安装的速度不仅非常慢&#xff0c;而且还有可能出现网络超时的情况&#xff0c;比如如下问题&#xff1a; Trac…

手撕HashMap源码2

目录 引言 putTreeVal红黑树添加结点方法讲解 treeifyBin进行树化的方法&#xff08;虚假的树化&#xff09; treeify真正的树化操作 从扩容的部分来分析红黑树的代码 split红黑树扩容迁移的方法 untreeify链化&#xff08;退树成链&#xff09; 红黑树代码分析 rota…

JS实现简单的gpt打字机效果

功能要求 在后台传输得到的数据在展示时候进行打字机效果一个字一个字进行展示 实现想法 1、在一个滚动容器中展示一个个文字&#xff0c;也就是将全部数据截取出来添加到一个新数组中 2、采用循环或者定时器进行编写 注意&#xff1a;前提条件是需要后端传值提供 换行符号…

Pytorch读写张量文件

目录 一、加载和保存张量 1、直接读写张量 2、读写张量列表 3、读写张量字典 二、加载和保存模型参数 一、加载和保存张量 1、直接读写张量 对于单个张量&#xff0c;我们可以直接调用load和save函数分别读写它们。这两个函数都要求我们提供一个名称&#xff0c;save要求将…

C++11 shared_ptr智能指针

转载自c语言中文网 在实际的 C 开发中&#xff0c;我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题&#xff0c;这些问题往往都是内存资源管理不当造成的。比如&#xff1a; 有些内存资源已经被释放&#xff0c;但指向它的指针并没有改…

FO with Prefix Hashing KEM Generalizations

参考文献&#xff1a; [Has88] Hastad J. Solving simultaneous modular equations of low degree[J]. siam Journal on Computing, 1988, 17(2): 336-341.[BBM00] Bellare M, Boldyreva A, Micali S. Public-key encryption in a multi-user setting: Security proofs and im…

2023 英特尔On技术创新大会直播 | AI 融合发展之旅

前言 2023 年的英特尔 On 技术创新大会中国站&#xff0c;主要聚焦最新一代增强 AI 能力的计算平台&#xff0c;深度讲解如何支持开放、多架构的软件方案&#xff0c;以赋能人工智能并推动其持续发展。 大会的目标之一是优化系统并赋能开发者&#xff0c;特别注重芯片增强技术…

国产划片机品牌众多,如何选择优质的供应商?

在半导体行业的发展浪潮中&#xff0c;划片机作为关键设备之一&#xff0c;其性能和质量对于生产过程的高效性和产品的质量具有至关重要的影响。近年来&#xff0c;国产划片机的品牌数量不断增多&#xff0c;为半导体行业提供了更多的选择。然而&#xff0c;如何从众多的品牌中…

解决docker拉取镜像错误 missing signature key 问题

核心原因&#xff1a;本地docker版本过低&#xff0c;需要&#xff1a; 1. 彻底卸载本地docker文件 2. 配置yum 镜像文件&#xff0c; 重新安装最新版本 相信教程可参考&#xff1a; CentOS安装Docker(超详细)_centos 安装docker-CSDN博客

七大主流的HttpClient程序比较

HttpClient HttpClient&#xff0c;是一款强大的支持HTTP协议的客户端编程工具包。主要功能在于提供一种有效、最新且功能丰富的方式来执行HTTP请求和响应。HttpClient与浏览器有着本质的区别&#xff0c;它并不会缓存内容&#xff0c;也不会处理嵌入在HTML页面中的代码或是错误…