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…

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

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

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

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

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

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

手撕HashMap源码2

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

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;如何从众多的品牌中…

【Python炫酷系列】一闪一闪亮星星,漫天都是小星星(完整代码)

文章目录 环境需求完整代码详细分析系列文章环境需求 python3.11.4及以上版本PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.…

Python 爬虫之简单的爬虫(四)

爬取动态网页&#xff08;下&#xff09; 文章目录 爬取动态网页&#xff08;下&#xff09;前言一、大致内容二、基本思路三、代码编写1.引入库2.加载网页数据3.获取并保存4.保存文档 总结 前言 上篇主要讲了如何去爬取数据&#xff0c;这篇来讲一下如何在获取的同时将数据整…

每个开发人员都应该知道的六个生成式 AI 框架和工具

在快速发展的技术环境中&#xff0c;生成式人工智能是一股革命性的力量&#xff0c;它改变了开发人员处理复杂问题和创新的方式。本文深入探讨了生成式 AI 的世界&#xff0c;揭示了对每个开发人员都至关重要的框架和工具。 1. LangChain LangChain 由 Harrison Chase 开发并于…

Ansible自动化运维以及模块使用

ansible的作用&#xff1a; 远程操作主机功能 自动化运维(playbook剧本基于yaml格式书写) ansible是基于python开发的配置管理和应用部署工具。在自动化运维中&#xff0c;现在是异军突起 ansible能够批量配置、部署、管理上千台主机。类似于Xshell的一键输入工具。不需要每…

通过层进行高效学习:探索深度神经网络中的层次稀疏表示

一、介绍 深度学习中的层次稀疏表示是人工智能领域日益重要的研究领域。本文将探讨分层稀疏表示的概念、它们在深度学习中的意义、应用、挑战和未来方向。 最大限度地提高人工智能的效率和性能&#xff1a;深度学习系统中分层稀疏表示的力量。 二、理解层次稀疏表示 分层稀疏表…

JDK各个版本特性讲解-JDK19特性

JDK各个版本特性讲解-JDK19特性 一、JAVA19概述二、新特性介绍1. 记录模式(预览版本)2.Linux/RISC-V 移植3.外部函数和内存 API &#xff08;预览版&#xff09;4.虚拟线程(预览版)5.Vector API &#xff08;第四次孵化&#xff09;6.Switch 模式匹配&#xff08;第三预览版&am…

从C代码制作chm开发文档【doxygen + graphviz+winChm】

需要的工具&#xff1a; 1. doxygen 最新版本 2. graphviz 最新版本 3. winChm破解版本 1. 最后制作的效果 2. 生成HTML文档 生成hmtl文档是勾选如下2项&#xff0c;为生成chm准备&#xff1a; 需要选择如下2项&#xff1a; generate HTMLHELP 生…

C语言数据结构-排序

文章目录 1 排序的概念及运用1.1 排序的概念1.2 排序的应用 2 插入排序2.1 直接插入排序2.2 希尔排序2.3 直接排序和希尔排序对比 3 选择排序3.1 堆排序3.2 直接选择排序 4 交换排序4.1 冒泡排序4.2 快速排序4.2.1 挖坑法14.2.2 挖坑法24.2.3 挖坑法3 5 并归排序6 十万级别数据…

深入探索Git的高级技巧与神奇操作(分支,高效合并)

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 深入探索Git的高级技巧与神奇操作 前言强制推送的妙用1. 什么是强制推送&#xff1f;2. 为什么需要使用强制推送&#xff1f;3. 强制推送的风险与注意事项4. 如何正确、安全地执行强制推送步骤&#x…