1、Nginx 配置介绍

认识Nginx服务的主配置文件 nginx.conf

nginx的配置文件一般在 /usr/local/nginx/conf/下,然后直接vim nginx.com 即可编辑

1.1 全局配置介绍

全局配置位于主配置文件最顶部,作用于整个Nginx服务进程,影响服务的资源分配、运行权限等基础属性

我、分别解释一下其中配置的含义

#user nobody;                                    #运行用户,若编译时未指定则默认为 nobody
worker_processes 4;                         #工作进程数量,可配置成服务器内核数 * 2,如果网站访问量不大,一般设为1就够用了
#error_log logs/error.log;                   #错误日志文件的位置
#pid logs/nginx.pid;                            #PID 文件的位置

1.2 I/O 事件配置介绍

I/O事件配置位于`events {}`块中,用于定义Nginx处理网络连接的方式,直接影响服务的并发处理能力。分别解释一下其中的含义

events {
use epoll;                       # epoll 模型2.6及以上版本的系统内核,使用epoll模型可以以提高性能
worker_connections 4096;                                                               #每个进程处理 4096 个连接
}


如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数。
在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。

可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。
/etc/security/limits.conf

epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
若工作进程数为 8,每个进程处理 4 096 个连接,则允许 Nginx 正常提供服务的连接数
已超过 3 万个(4 096×8=32 768),当然具体还要看服务器硬件、网络带宽等物理条件的性
能表现。

1.3 HTTP 配置介绍

HTTP配置位于`http {}`块中,是Web服务的核心配置区域,定义HTTP协议相关的全局参数、虚拟主机、缓存策略等

使用“http { }”界定标记,包括访问日志、HTTP 端口、网页目录、默认字符集、连接保 持,以及后面要讲到的虚拟 Web 主机、PHP 解析等一系列设置,其中大部分配置语句都包 含在子界定标记“server { }”内

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     on;                                                     ##与sendfile配合使用,合并数据包发送
keepalive_timeout  65;                                                            ##连接保持超时时间,单位是秒
gzip  on;                                                      # gzip模块设置,设置是否开启gzip压缩输出

1.4 Web 服务的监听配置介绍

监听配置位于`server {}`块中,用于定义虚拟主机的访问入口,包括监听端口、域名绑定等
server {   
listen 80;                                                              ##监听地址及端口
server_name www.kgc.com;                              ##站点域名,可以有多个,用空格隔开
charset utf-8;                                                       ##网页的默认字符集
location / {                                                               ##根目录配置
root html;                                                           ##网站根目录的位置/usr/local/nginx/html  
index index.html index.php;                              ##默认首页文件名
}
error_page 500 502 503 504 /50x.html;                ##内部错误的反馈页面
location = /50x.html {                                             ##错误页面配置
root html;

1.4 其他配置介绍

除核心配置外,Nginx还支持多种扩展配置,满足不同业务场景需求

 日志格式设定
$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.benet.com/test/1.html,会返回文件/var/www/html/test/1.html

alias(别名配置):alias /var/www/html
请求www.benet.com/test/1.html,会返回文件/var/www/html/1.html

proxy_pass(反向代理配置)

2.nginx 虚拟主机配置流程

2.1 访问状态统计配置

1 查看已安装的所有模块

先使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块 

2 修改 nginx.conf 配置文件

修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置

1.进入 cd /usr/local/nginx/conf目录下然后先备份nginx文件,输入cp nginx.conf nginx.conf.bak


然后进入nginx.conf进行配置       vim /usr/local/nginx/conf/nginx.conf
然后在http {}`块中更改一下设置
http {
......
server {
listen 80;
server_name 10.0.0.250;           #在这里可以输入你自己的ip地址或域名
charset utf-8;
location / {
root html;
index index.html index.htm;
}
然后在后面添加 stub_status 配置
location /status {                  #访问位置为/status
stub_status on;                 #打开状态统计功能
access_log off;                 #关闭此位置的日志记录
}
}
}

配置完成可以重启服务

3 重启服务,访问测试

输入nginx -t 进行检查,然后重启nginx服务,输入:systemctl restart nginx
然后浏览器访问 http://10.0.0.250/status


Active connections :表示当前的活动连接数;
server accepts handled requests :表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、 已处理的请求数。

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

3. 基于授权的访问控制流程

1.先安装httpd-tools服务输入 yum install -y httpd-tools 

2.然后创建用户名密码文件,输入:htpasswd -c /usr/local/nginx/passwd.db     fyl(这里输入你想输入的用户名)然后新建密码


3.将密码文件所有权直接交给nginx用户 输入   chown nginx /usr/local/nginx/passwd.db


4.给文件赋予权限 chmod 400 /usr/local/nginx/passwd.db

5 修改主配置文件相对应目录,添加认证配置项

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

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

6.重启服务,访问测试

nginx -t    systemctl restart nginx


浏览器访问 http://192.168.10.21,输入刚才的用户名和密码

然后登入即可

4.基于客户端的访问控制

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

vim /usr/local/nginx/conf/nginx.conf  进入编辑

在 location /下添加一下规则 
##添加控制规则##
allow 10.0.0.250;                    #允许访问的客户端 IP
deny all;                               #拒绝其它IP客户端访问



systemctl restart nginx,nginx -t 检查并重启,然后访问10.0.0.250

然后发现其他ip登入没有权限,只有10.0.0.025才有

5. 基于域名的 Nginx 虚拟主机流程

1. 为虚拟主机提供域名解析

echo "10.0.0.250 www.yjs.com www.fyl.com" >> /etc/hosts

2. 为虚拟主机准备网页文档输入,以下命令

mkdir -p /usr/local/nginx/html/fyl
mkdir -p /usr/local/nginx/html/yjs

echo "<h1>www.yjs.com</h1>" > /usr/local/nginx/html/fyl/index.html
echo "<h1>www.fyl.com</h1>" > /usr/local/nginx/html/yjs/index.html

3. 修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf 进入配置文件进行修改
......
http {
......
server {
listen 80;
server_name www.yjs.com;                    #设置域名www.yjs.com
charset utf-8;
access_log logs/www.yjs.access.log;         #设置日志名
location / {
root /usr/local/nginx/html/yjs/;                 #设置www.yjs.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.fyl.com;                  #设置域名www.fyl.com
charset utf-8;
access_log logs/www.benet.access.log;
location / {
root /usr/local/nginx/html/fyl/;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}

4.重启服务,访问测试

systemctl restart nginx,ngint -t

浏览器访问
http://www.yjs.com


http://www.fyl.com

6 基于IP 的 Nginx 虚拟主机配置

1先创建一个新网卡 ens36

2. 配置server 1  www.yjs.com设置地址为10.0.0.240:80

配置server   www.fyl.com设置地址为10.0.0.250:80

server {
listen 10.0.0.250:80;                    #设置监听地址10.0.0.250


然后检查重启nginx服务,然后浏览器访问
http://10.0.0.240
http://10.0.0.250

7 基于端口的 Nginx 虚拟主机

1.进入 vim /usr/local/nginx/conf/nginx.conf设置,然后将www.yjs.com 的端口设置为80
......
http {
......
server {
listen 10.0.0.240:8080;                  #设置监听 8080 端口
server_name www.yjs.com;
charset utf-8;        

2.将www.fyl.com的端口设置为8888

server {
listen 10.0.0.250:8888;                  #设置监听 8888 端口
server_name www.fyl.com;

3 重启服务,测试访问

systemctl restart nginx -t​
浏览器访问测试
http://192.168.10.21:8080

http://192.168.10.21:8888

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

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

相关文章

文字识别接口-文字识别技术-ocr api

文字识别接口&#xff0c;顾名思义&#xff0c;就是一种将图像文字或手写文字转换为可编辑文本的技术。文字识别接口&#xff0c;基于深度学习算法与自主ocr核心实现多种场景字符的高精度识别与结构化信息提取&#xff0c;现已被广泛应用于银行、医疗、财会、教育等多个领域。随…

DeepSeek R1大模型微调实战-llama-factory的模型下载与训练

文章目录概要1.下载模型2.llama factory 训练模型2.1 模型微调2.2 模型评估2.3 模型对话2.4 导出模型3.硬件选择概要 LLaMA Factory 是一个简单易用且高效的大型语言模型训练与微调平台。通过它&#xff0c;用户可以在无需编写任何代码的前提下&#xff0c;在本地完成上百种预…

C++ map和set

C参考文献&#xff1a;cplusplus.com - The C Resources Network 目录 一、序列式容器和关联式容器 二、set系列 &#xff08;1&#xff09;set类的介绍 &#xff08;2&#xff09;set的构造和迭代器 &#xff08;3&#xff09;set的接口 1.insert​编辑 2.find和erase 3…

头一次见问这么多kafka的问题

分享一篇粉丝朋友整理的面经&#xff0c;第一次遇见问那么多kafka的问题&#xff0c;看看他是怎么回答的。 先来看看 职位描述&#xff1a; 岗位职责&#xff1a; 负责基于 Go 的后端服务的设计、开发和维护&#xff1b;参与系统架构设计&#xff0c;确保系统的高可用性、高性能…

自底向上了解CPU的运算

文章目录 引言 CPU如何实现逻辑运算 NMOS和PMOS 基于MOS管组合下的逻辑门运算 逻辑运算下运算的实现 ALU的诞生 CPU的诞生 关于二进制运算的研究 十进制转二进制基础换算 为什么负数要使用补码进行表示 为什么反码就能解决正负数相加问题,我们还需要用补码来表示负数呢? 小数…

apache poi与Office Open XML关系

以下内容来自AI https://ecma-international.org/publications-and-standards/standards/ecma-376/ 官方规范 https://poi.apache.org/components/oxml4j/index.html java中针对Office Open XML的实现 Apache poi中各个组件 https://poi.apache.org/components/index.html …

S32K328上芯片内部RTC的使用和唤醒配置

1&#xff1a;RTC介绍 1.1 RTC基础功能介绍 参考《S32K3xx Reference Manual》&#xff0c;S32K328芯片内部自带RTC功能&#xff0c;并且支持从低功耗状态下唤醒设备&#xff1b;1.2 RTC电源介绍 由以下三张图可知 1&#xff1a;RTC由V11供电&#xff0c;V11依赖外部V15供电&am…

【Python】数据可视化之分类图

目录 条形图 箱形图 散点图 分簇散点图 小提琴 分簇小提琴 条形图 条形图是一种直观的图表形式&#xff0c;它通过不同长度的矩形条&#xff08;即“条形”&#xff09;来展示数值变量的中心趋势估计值&#xff0c;其中每个矩形的高度直接对应于该组数据的某个中心量度&…

RabbitMQ模型详解与常见问题

项目demo地址&#xff1a;https://github.com/tian-qingzhao/rabbitmq-demo 一、RabbitMQ组件概念 1.1 Server&#xff1a;接收客户端的连接&#xff0c;实现AMQP实体服务。 1.2 Connection&#xff1a;连接 应用程序与Server的网络连接&#xff0c;TCP连接。 1.3 Channel&…

网络:相比于HTTP,HTTPS协议到底安全在哪?

网络&#xff1a;相比于HTTP&#xff0c;HTTPS协议到底安全在哪&#xff1f; 我们知道HTTPS也是一种应用层协议&#xff0c;它在HTTP的基础上有一层加密&#xff0c;因为HTTP的数据传输都是以明文方式传输的&#xff0c;所以加密主要是为了防止数据在传输的时候被篡改 今天我…

AI 基础设施新范式,百度百舸 5.0 技术深度解析

本文整理自 2025 年 8 月 29 日百度云智大会 —— AI 算力平台专题论坛&#xff0c;百度智能云 AI 计算首席科学家王雁鹏的同名主题演讲。大家下午好&#xff01;昨天在主论坛&#xff0c;我们正式发布了百度百舸 AI 计算平台 5.0&#xff0c;并展示了多项亮眼的性能数据。今天…

IO进程线程;多线程;线程互斥同步;互斥锁;无名信号量;条件变量;0905

思维导图多线程打印ABC运用无名面量 实现进程同步#include<myhead.h> //定义 无名信号量 sem_t sem1; sem_t sem2; sem_t sem3; //线程1 void* task1(void *arg) {while(1){sem_wait(&sem1);printf("A");fflush(stdout);sleep(1);sem_post(&sem2);} } …

固高 GTS-800 运动控制卡完全使用指南:从硬件部署到高阶应用

固高 GTS-800 系列运动控制卡作为中端工业控制领域的标杆产品,以其 8-16 轴同步控制能力、丰富的插补功能和稳定的性能,广泛应用于激光加工、PCB 制造、精密装配等自动化设备中。本文将系统讲解 GTS-800 的硬件架构、开发环境搭建、核心功能实现及工程实践技巧,帮助工程师快…

STM32F103_Bootloader程序开发15 - 从Keil到vscode + EIDE + GCC的迁移实践

导言 STM32 - Embedded IDE - GCC - 如何在工程中生成.bin格式固件 STM32 - Embedded IDE - GCC - 使用 GCC 链接脚本限制 Flash 区域 STM32 - Embedded IDE - GCC - 如何在工程中定义一段 NoInit RAM 内存 STM32 - Embedded IDE - GCC - 如何将编译得到的.bin固件添加CRC32校验…

HTTP协议——理解相关概念、模拟实现浏览器访问自定义服务器

文章目录HTTP协议理解相关概念HTTP相关背景知识认识URLHTTP协议在网络通信的宏观认识urlencode & urldecodeHTTP请求和应答的格式模拟实现浏览器访问自定义服务器关于http requesthttp request的请求行——URI使用浏览器完成静态资源的访问常用的报头属性http response状态…

【服务器】英伟达M40显卡风冷方案心得

在之前的博文中&#xff0c;博主说到最近准备自己组装一台服务器&#xff0c;主要用于有限元仿真&#xff0c;其次兼顾一部分AI机器学习的工作&#xff0c;于是博主就入手了一张英伟达Tesla M40的12G显卡GPU。本来博主也纠结过是买M40还是M60&#xff0c;后来在网上看到说M60看…

Java中的锁升级机制

目录 核心思想 Java对象头&#xff08;Object Header&#xff09;与Mark Word 锁升级的详细步骤 1. 无锁&#xff08;No Lock&#xff09; 2. 偏向锁&#xff08;Biased Locking&#xff09; 3. 轻量级锁&#xff08;Lightweight Lock&#xff09; 4. 重量级锁&#xff…

Scikit-learn Python机器学习 - 特征预处理 - 标准化 (Standardization):StandardScaler

锋哥原创的Scikit-learn Python机器学习视频教程&#xff1a; 2026版 Scikit-learn Python机器学习 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程主要讲解基于Scikit-learn的Python机器学习知识&#xff0c;包括机器学习概述&#xff0c;特征工程(数据…

windows下wsl2 ubuntu开发配置

配置环境变量# 设置方式 命令/文件 生效范围 适用场景 # 临时 export FORCE_UNSAFE_CONFIGURE1 当前终端 临时编译软件 # 用户级永久 ~/.bashrc或~/.profile 当前用户 长期使用&#xff08;单用户&#xff09; # 系统级永久 /etc/environment或/…

网络编程 05:UDP 连接,UDP 与 TCP 的区别,实现 UDP 消息发送和接收,通过 URL 下载资源

一、概述 记录时间 [2025-09-02] 前置文章&#xff1a; 网络编程 01&#xff1a;计算机网络概述&#xff0c;网络的作用&#xff0c;网络通信的要素&#xff0c;以及网络通信协议与分层模型 网络编程 02&#xff1a;IP 地址&#xff0c;IP 地址的作用、分类&#xff0c;通过 …