Nginx服务的主配置文件及配置举例

Nginx服务的主配置文件

    • 安装Nginx
    • 认识Nginx服务
      • 全局配置
      • I/O 事件配置
      • HTTP 配置
      • 日志格式设定
    • 访问状态统计配置
      • 查看Nginx已安装模块
      • 修改 nginx.conf 配置文件
      • 重启服务,访问测试
    • 基于授权的访问控制
      • 准备用户密码认证文件
      • 修改 nginx.conf 配置文件
      • 重启服务,访问测试
    • 基于客户端的访问控制
      • 访问控制规则
      • 示例
        • 修改 nginx.conf 配置文件
        • 重启服务,访问测试
      • 访问控制注意事项
    • Nginx虚拟主机
      • 准备工作
        • 为虚拟主机准备网页文档
      • 基于域名的 Nginx 虚拟主机
        • 为虚拟主机提供域名解析
        • 修改Nginx的配置文件
        • 重启服务,访问测试
      • 基于IP 的 Nginx 虚拟主机
        • 新增网卡配置
        • 修改Nginx的配置文件
        • 重启服务,访问测试
      • 基于端口的 Nginx 虚拟主机
        • 修改Nginx的配置文件
        • 重启服务,访问测试

安装Nginx

链接: 安装Nginx

安装Nginx服务请转移到上文博客

认识Nginx服务

  1. 全局块:全局配置,对全局生效。
  2. events块:配置影响 Nginx 服务器与用户的网络连接。
  3. http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。
  4. server块:配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块。
  5. location块:用于配置匹配的 uri 。
  6. upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

配置文件位置
/usr/local/nginx/conf/nginx.conf

全局配置

#user nobody; 					#运行用户,若编译时未指定则默认为 nobody
worker_processes 1; 			#工作进程数量,一般设置为和 CPU 核数一样。设置为auto,nginx将会自己获取这个数值
#error_log logs/error.log; 		#错误日志文件的位置
#pid logs/nginx.pid; 			#PID 文件的位置
worker_rlimit_nofile 65535;		#指定 worker 子进程可以打开的最大文件句柄数,默认为1024

在这里插入图片描述

默认全局配置

I/O 事件配置

2.I/O 事件配置
events {use epoll; 					#使用 epoll I/O模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能worker_connections 65535; 	#每个 worker 子进程能够处理的最大并发连接数multi_accept on;            #是否一次性将监听到的连接全接收进来,默认为off,关闭时一次接收一条连接accept_mutex on;            #默认为on,开启时表示以串行方式接入新连接,否则将通报给所有worker。这可能会浪费资源并产生不可预计的后果,例如惊群问题
}

#如提高每个进程的连接数还需执行“ulimit -HSn 65535”命令临时修改本地每个进程可以同时打开的最大文件数。
#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
#可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。
#epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
#worker_processes的值和work_connections的值决定了最大并发数量,最大并发数计算方式为:worker_processesworker_connections。但在反向代理场景中计算方法不同,因为nginx既要维持和客户端的连接,又要维持和后端服务器的连接,因此处理一次连接要占用2个连接,所以最大并发数计算方式为:worker_processesworker_connections/2。

在这里插入图片描述

默认I/O 事件配置

HTTP 配置

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和tcp_nodelay用于防止网络阻塞tcp_nopush     on;tcp_nodelay    on;##连接保持超时时间,单位是秒#keepalive_timeout  0;keepalive_timeout  65;##gzip模块设置,设置是否开启gzip压缩输出#gzip  on;##Web 服务的监听配置server {##监听地址及端口listen 80; ##站点域名,可以有多个,用空格隔开server_name www.kgc.com;##网页的默认字符集charset utf-8;##根目录配置location / {##网站根目录的位置/usr/local/nginx/htmlroot html;##默认首页文件名index index.html index.php;}##内部错误的反馈页面error_page 500 502 503 504 /50x.html;##错误页面配置location = /50x.html {root html;}}
}

日志格式设定

r e m o t e a d d r 与 remote_addr与 remoteaddrhttp_x_forwarded_for用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态;成功是200,
$body_bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从哪个页面链接访问过来的;
h t t p u s e r a g e n t :记录客户浏览器的相关信息;通常 w e b 服务器放在反向代理的后面,这样就不能获取到客户的 I P 地址了,通过 http_user_agent:记录客户浏览器的相关信息; 通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过 httpuseragent:记录客户浏览器的相关信息;通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

location常见配置指令,root、alias、proxy_pass
root(根路径配置,可以写在 http、server、location 等配置中):root /var/www/html
请求www.kgc.com/test/1.html,会返回文件/var/www/html/test/1.html

alias(别名配置,只能写在 location 中):alias /var/www/html/ 注:使用 alias 末尾要添加 /
请求www.kgc.com/test/1.html,会返回文件/var/www/html/1.html

proxy_pass(反向代理配置)

在这里插入图片描述

默认HTTP事件配置

访问状态统计配置

查看Nginx已安装模块

查看已安装的 Nginx 是否包含HTTP_STUB_STATUS 模块

cat /opt/nginx-1.12.0/auto/options | grep YES     #可查看 nginx 已安装的所有模块/usr/local/nginx/sbin/nginx -V 查看已安装的模块

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改 nginx.conf 配置文件

cd /usr/local/nginx/confcp nginx.conf nginx.conf.bak		#备份原来的配置文件vim /usr/local/nginx/conf/nginx.confhttp {......server {listen 80;server_name www.kgc.com;charset utf-8;location / {root html;index index.html index.php;}##添加 stub_status 配置##location /status { 					#访问位置为/statusstub_status on; 				#打开状态统计功能access_log off; 				#关闭此位置的日志记录}}}

在这里插入图片描述
在这里插入图片描述

重启服务,访问测试

nginx -t		#检查配置文件是否配置正确
systemctl restart nginx

在这里插入图片描述
在这里插入图片描述

浏览器访问 http:///status

在这里插入图片描述

Active connections:表示当前的活动连接数,即当前与 Nginx 服务器建立的连接数。
server accepts handled requests :表示已经处理的连接信息
三个数字依次表示服务器已接收的连接数;服务器成功处理的连接数;服务器累计处理的总请求数(在保持连接模式下,请求数量可能会大于连接数量)
Reading:表示当前正在从客户端读取数据的连接数。
Writing:表示当前正在向客户端写入数据的连接数。
Waiting:表示当前空闲并等待请求的连接数。

可 curl -Ls http://192.168.80.10/status 结合 awk与if 语句进行性能监控。

基于授权的访问控制

准备用户密码认证文件

yum install -y httpd-tools	#下载安装httpd-toolshtpasswd -c /usr/local/nginx/passwd.db wl	#创建文件并在文件内创建用户wlchown nginx /usr/local/nginx/passwd.db	#更改文件拥有者chmod 400 /usr/local/nginx/passwd.db	#更改用户访问权限

在这里插入图片描述
在这里插入图片描述

修改 nginx.conf 配置文件

vim /usr/local/nginx/conf/nginx.conf
####只对访问状态统计站点生效......server {location /status {......##添加认证配置##auth_basic "secret";				#设置密码提示框文字信息auth_basic_user_file /usr/local/nginx/passwd.db;}}

在这里插入图片描述
在这里插入图片描述

重启服务,访问测试

nginx -t		#检查配置文件是否配置正确
systemctl restart nginx

在这里插入图片描述
浏览器访问 http:///status
输入刚刚创建的用户和密码,才可以继续访问
在这里插入图片描述

如需要再次测试,请提前清楚浏览器访问数据

基于客户端的访问控制

访问控制规则

deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。

示例

除本机外其他地址均拒绝访问 “status” 站点

修改 nginx.conf 配置文件
vim /usr/local/nginx/conf/nginx.conf......server {location /status {......##添加控制规则##allow 192.168.80.200; 					#允许访问的客户端 IPdeny all;								#拒绝其它IP客户端访问}}

在这里插入图片描述

重启服务,访问测试
nginx -t		#检查配置文件是否配置正确
systemctl restart nginx

在这里插入图片描述

  • 本机访问测试
    在这里插入图片描述
    可以访问
  • 其他端访问测试
    在这里插入图片描述
    无法访问

访问控制注意事项

  • 在 http{…}配置块(对所有站点生效)
  • server{…}配置块(对当前站点所有的访问路径生效)
  • location{…}配置块(只对当前站点指定的URL访问路径生效) 中添加配置

Nginx虚拟主机

准备工作

为虚拟主机准备网页文档
mkdir -p /var/www/html/wl	echo "<h1>www.wl.com</h1>" > /var/www/html/wl/index.htmlcat /var/www/html/wl/index.htmlmkdir -p /var/www/html/tjecho "<h1>www.tj.com</h1>" > /var/www/html/tj/index.htmlcat /var/www/html/tj/index.html

在这里插入图片描述

基于域名的 Nginx 虚拟主机

为虚拟主机提供域名解析
echo "<IP> <域名1> <域名2>" >> /etc/hosts

在这里插入图片描述

修改Nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 80;server_name www.tj.com;					#设置域名www.tj.comcharset utf-8;access_log logs/www.tj.access.log; 		#设置日志名location / {root /var/www/html/tj;					#设置www.tj.com 的工作目录index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}server {listen 80;server_name www.wl.com;					#设置域名www.wl.comcharset utf-8;access_log logs/www.wl.access.log; location / {root /var/www/html/wl;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}	
}

在这里插入图片描述

重启服务,访问测试
nginx -t		#检查配置文件是否配置正确
systemctl restart nginx

在这里插入图片描述
浏览器访问

  • http://www.tj.com
    在这里插入图片描述

  • http://www.wl.com
    在这里插入图片描述

基于IP 的 Nginx 虚拟主机

新增网卡配置

在这里插入图片描述

nmcli connection modify ens36 ipv4.addresses 10.190.33.50/24 ipv4.gateway 10.190.33.2nmcli connection up ens36

在这里插入图片描述

修改Nginx的配置文件
......
http {
......server {listen <网卡1IP>:80;					#设置监听地址10.190.33.30server_name www.tj.com;charset utf-8;access_log logs/www.tj.access.log; location / {root /var/www/html/tj;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}server {listen <网卡2IP>:80;					#设置监听地址10.190.33.50server_name www.wl.com;charset utf-8;access_log logs/www.wl.access.log; location / {root /var/www/html/wl;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}	
}

在这里插入图片描述

重启服务,访问测试
nginx -t		#检查配置文件是否配置正确
systemctl restart nginx

在这里插入图片描述
浏览器访问

  • "IP1"访问
    在这里插入图片描述

  • “IP2”访问

基于端口的 Nginx 虚拟主机

修改Nginx的配置文件
......
http {
......server {listen 10.190.33.30:8014;					#设置监听 8014 端口server_name www.tj.com;charset utf-8;access_log logs/www.tj.access.log; location / {root /var/www/html/tj;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}server {listen 10.190.33.30:8888;					#设置监听 8888 端口server_name www.wl.com;charset utf-8;access_log logs/www.wl.access.log; location / {root /var/www/html/wl;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}	
}

在这里插入图片描述

重启服务,访问测试
nginx -t		#检查配置文件是否配置正确
systemctl restart nginx

在这里插入图片描述
浏览器访问

  • 8014端口访问
    在这里插入图片描述

  • 8888端口访问
    在这里插入图片描述

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

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

相关文章

java向上转型

介绍 代码 父类 package b;public class father_ {//father classString name"动物";int age10;public void sleep() {System.out.println("睡");}public void run() {System.out.println("跑");}public void eat() {System.out.println("…

ISCC2024之Misc方向WP

目录 FunZip Magic_Keyboard Number_is_the_key RSA_KU 成语学习 钢铁侠在解密 工业互联网模拟仿真数据分析 精装四合一 时间刺客 有人让我给你带个话 FunZip 题目给了一个txt&#xff0c;内容如下 一眼丁真&#xff0c;base隐写&#xff0c;使用工具即可得到flag Fl…

联邦学习的简要概述

联邦学习的简要概述 联邦学习&#xff08;Federated Learning, FL&#xff09;是一种分布式机器学习方法&#xff0c;旨在保护数据隐私的同时&#xff0c;利用多方数据进行模型训练。以下是对联邦学习的详细介绍&#xff0c;包括其基本概念、工作流程、优势和挑战&#xff0c;…

常见的 MySQL 优化方法

常见的 MySQL 优化方法 常见的 MySQL 优化方法选择最合适的字段属性尽量把字段设置为 NOT NULL使用连接&#xff08;JOIN&#xff09;来代替子查询&#xff08;Sub-Queries&#xff09;使用联合&#xff08;UNION&#xff09;来代替手动创建的临时表事务锁定表使用外键使用索引…

在Centos上为Tesla T4显卡安装NVIDIA驱动以及cuda和cudnn

前期准备&#xff1a; 升级gcc编译环境&#xff1a; 查看gcc版本&#xff1a; gcc -v &#xff08;centos默认好像是4.8.5版本&#xff09; 升级gcc&#xff1a; yum install centos-release-scl yum install devtoolset-9-gcc* 备份旧链接创建新链接&#xff1a;…

压测工具sysbench

一、安装 yum install gcc gcc-c autoconf automake make libtool bzr mysql-devel mysql libaio-devel yum remove mariadb.x86_64 mariadb-devel.x86_64 sh install-mysql.sh --installmysql --innodbbufferpoolsize2G --datadir/mysql/data --password123321 --binlogdir…

----JAVA 继承----

引言 再java中你能创造出很多的类&#xff0c;但如果这些类中的成员再另一个类中也要使用&#xff0c;那么就要用到继承来实现指定类中成员的使用了 那么也就可以写出这样的代码 再类Cat中使用了类Animal的成员&#xff0c;这里我们称Cat叫子类&#xff0c;Animal叫父类 概念…

Ubuntu22.04嵌入开发环境之NFS文件系统

近期我把Ubuntu18.04开发环境改成了22.04写一上安装过程与问题。 1.安装NFS sudo apt install nfs-kernel-server systemctl status nfs-kernel-server systemctl emable nfs-kernel-server2.创建共享目录 sudo mkdir /home/share/ sudo chmod 775 -R /home/share/3.配置NFS…

AIGC笔记--MoE模型的简单实现

1--MoE模型 MoE模型全称是混合专家模型&#xff08;Mixture of Experts, MoE&#xff09;&#xff0c;其主要将多个专家神经网络模型组合成一个更大的模型。 MoE模型的核心组成有两部分&#xff1a;第一部分是多个专家网络模型&#xff0c;每个专家网络模型往往是独立的&#x…

【UE+GIS】UE5GIS CAD或shp构建3D地形

贴合地形的矢量图形实现方法 一、灰度图的制作和拉伸换算1、基于高程点集实现2、基于等高线实现3、拉伸计算 二、生成地形模型的实现方案1、3Dmax导入灰度图2、使用ArcMap/Arcpro/FME等GIS数据处理工具3、UE导入灰度图 三、地形上叠加地形渲染效果的实现方案1、贴花2、数据渲染…

日志管理:Slf4j、Log4j、LogBack与ELK实战指南

1.现代软件开发中日志的重要性 在软件开发和运维的世界里&#xff0c;日志管理是一项至关重要的技术。正确地记录、管理和分析日志数据&#xff0c;能为系统的可靠性、可维护性和安全性带来显著的好处。 1.1 日志在故障排查中的作用 日志是系统活动的详细记录。当系统发生故…

Z字形变换 ---- 模拟

题目链接 题目: 分析: 题意如图所示:如果我们按照题意, 真的实现一个矩阵, 这样做的时间和空间复杂度很高, 所以我们可以试试看找规律, 优化一下我们观察他们的下标: 如果找到下标的规律, 那么我们就不用创建矩阵, 就能找到最终结果的下一个字符是什么特殊情况, 当numRows 1…

读AI未来进行式笔记01深度学习

1. AI 1.1. AI已经发展成一门涵盖许多子领域的重要学科 1.2. 机器学习是迄今为止AI应用最成功的子领域 1.2.1. 在这个领域中&#xff0c;最大的技术突破就是深度学习 1.3. “人工智能”“机器学习”和“深度学习”的时候&#xff…

C语言编程技巧:深度挖掘与高效实践

C语言编程技巧&#xff1a;深度挖掘与高效实践 在编程的世界里&#xff0c;C语言以其高效、灵活和底层控制能力强等特点&#xff0c;一直备受开发者们的青睐。然而&#xff0c;要想真正掌握C语言的精髓&#xff0c;并编写出高效、健壮的代码&#xff0c;却并非易事。本文将从四…

基于STM32与TB6600的机械臂项目

基于STM32与TB6600的机械臂项目是一个涉及硬件设计、软件开发和控制算法实现的综合项目。以下是对该项目的一个简要介绍&#xff0c;以及一些基础的代码示例。 项目概述 1. 系统组成 STM32微控制器&#xff1a;作为系统的主控制器&#xff0c;负责处理传感器数据和控制机械臂…

Pointnet学习以及对代码的实现

由于点云不是常规数据格式&#xff0c;通常将此类数据转换为规则的 3D 体素网格或图像集合&#xff0c;然后再用神经网络进行处理。数据表示转换使生成的数据过于庞大。 PointNet是第一个直接处理原始点云的方法。只有全连接层和最大池化层&#xff0c;PointNet网络在推理速度…

Android串口调试ADB

在Android设备上&#xff0c;通过串口&#xff08;通常指的是ADB&#xff0c;即Android Debug Bridge&#xff09;来执行dumpsys命令来检查某个包&#xff08;例如com.android.bluetooth&#xff09;是否支持某个服务&#xff08;如A2dpSinkService&#xff09;是开发者或高级用…

深入理解 Python 迭代器与生成器:详细指南

迭代器和生成器是 Python 中强大的特性&#xff0c;用于简化代码和提高效率。它们允许我们在需要时逐步计算结果&#xff0c;避免一次性加载所有数据到内存中。本文将详细介绍 Python 迭代器和生成器的基本语法、命令、示例、应用场景、注意事项&#xff0c;并进行总结。 迭代…

Android在不同层面增加应用

1 App 应用代码一般在开发者的项目目录下&#xff0c;packages/apps/YourApp/&#xff0c;比如app/src/main/java目录下 对于系统应用&#xff0c;源代码可能位于packages/apps/目录下&#xff0c;例如packages/apps/Settings。 用户安装的应用&#xff08;从Google Play或其…

代码随想录--哈希表--两数之和

题目 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素不能使用两遍。 示例: 给定 nums [2, 7, 11, 15], t…