[Linux] nginx配置的主配置文件

一、六个模块的作用

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

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

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

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

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

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

二、认识Nginx服务的主配置文件

2.1 全局配置模块

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

vim /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 60000;		#设置所有worker进程最大可以打开的文件数,默认为1024

 2.2 I/O 事件配置

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

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

永久修改的方式:

[root@CXK /opt/nginx-1.24.0/conf]#vim /etc/security/limits.conf 

#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。


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


#epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。(实现异步非阻塞)

 2.3 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     on;   ##只在sendfile on时有效。调用tcp_cork方法,让数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞。默认为off。
	
    #keepalive_timeout  0;  ##连接保持超时时间,单位是秒
    keepalive_timeout  65;  ##连接保持超时时间,单位是秒
	
    #gzip  on;   ##gzip模块设置,设置是否开启gzip压缩输出

 2.4 web服务监听设置

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;
		}
	}
}

 2.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

处理方式: root路径+location路径
请求www.kgc.com/test/1.html,会返回文件/var/www/html/test/1.html

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

处理方式:alias路径替换location路径
请求www.yang.com/test/1.html,会返回文件/var/www/html/1.html

root和alias对比

当设置  location /test{     }

alias /var/www/html  和   root /var/www/html  有什么区别?

alias是别名设置,将设置的网页放在/var/www/html下,访问

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

 三、nginx访问状态统计

1. 查看访问统计配置的相关模块 
cat /opt/nginx-1.24.0/auto/options | grep YES   #可查看 nginx 已安装的所有模块

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

2. 修改主配置文件,添加访问状态统计模块  
#主配置备份,防止设置错误,无法还原
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak

 修改主配配置具体操作:


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

server {
        listen       80;
        server_name  www.cxk.com;   #主机名设置

        charset utf-8;              #万国字符集

        #access_log  logs/host.access.log  main;

        location / {
            root   html;            #Nginx默认网页设置
            index  index.html index.htm;
        }
        #访问位置为/status
        location /status {
            stub_status on;  #打开状态统计功能
            access_log off;  #关闭此位置的日志记录
        }

3.重启nginx服务,访问测试:
nginx -t #检查nginx配置文件是否有错误
kill -1 11799

四、nginx授权访问控制

 1. 生成用户密码认证文件 
yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db lisi
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

2. 修改主配置 
vim /usr/local/nginx/conf/nginx.conf
 
server {
		location / {
			......
			##添加认证配置##
			auth_basic "secret";				#设置密码提示框文字信息
			auth_basic_user_file /usr/local/nginx/passwd.db;  #密码认证模块的加载配置
		}
	}

3. 重启服务,进行访问测试 
nginx -t #检查nginx配置文件是否有错误
kill -1 11799

 五、nginx客户端访问控制

 设置方式类似于黑白名单

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

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

2. 修改主配置
vim /usr/local/nginx/conf/nginx.conf
......
    server {
        location / {
            ......
            ##添加控制规则##
            allow 192.168.136.100;   #允许当前主机
            allow 127.0.0.1;         #允许自己
            allow 192.168.136.1;     #允许真机
            allow 192.168.136.120;   #允许访问的客户端 IP
            deny all;                #拒绝其它IP客户端访问
        }
    }

 3. 重启服务,进行访问测试 
nginx -t #检查nginx配置文件是否有错误
kill -1 11799

 

 六、nginx虚拟主机

6.1 基于域名的虚拟主机

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

echo "192.168.136.100 www.cxk.com www.kun.com" >> /etc/hosts  添加到本机域名解析
2.为虚拟主机准备网页文档 

mkdir -p /var/www/html/cxk  #分别创建两个不同域名的网页目录
mkdir -p /var/www/html/kun  #分别创建两个不同域名的网页目录
echo "<h1>cxk hhh</h1>" > /var/www/html/cxk/index.html #为两个不同的域名默认首页网页添加内容
echo "<h1>kun hhh</h1>" > /var/www/html/kun/index.html #为两个不同的域名默认首页网页添加内容
3.修改Nginx的配置文件 

vim /usr/local/nginx/conf/nginx.conf
server {
        listen       80;
        server_name  www.cxk.com;
        charset utf-8;
        access_log  logs/www.cxk.access.log;  #不同虚拟主机的域名访问日志
        location / {
            root   /var/www/html/cxk;         #默认网页
            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.kun.com;
        charset utf-8;
        access_log  logs/www.kun.access.log;
        location / {
            root   /var/www/html/kun;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
4.重启服务,测试
systemctl restart nginx

6.2 基于IP 的 Nginx 虚拟主机 

 1. 设置虚拟主机IP 
[root@localhost conf]#ifconfig ens33:0 192.168.136.200/24
[root@localhost conf]#ifconfig ens33:0 

2. 修改主配置文件

vim nginx.conf

server {
        listen  192.168.136.100:80;
        server_name  localhost;

        charset utf-8;

        access_log  logs/www.cxk.access.log;

        location / {
            root   /var/www/html/cxk;
            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.136.200:80;
        server_name  localhost;

        charset utf-8;

        access_log  logs/www.kun.access.log;

        location / {
            root   /var/www/html/kun;
            index  index.html index.htm;
        }
error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
3. 重启服务,测试 

 6.3 基于端口的 Nginx 虚拟主机 

1. 修改主配置文件
vim nginx.conf
server {
        listen  192.168.136.100:8080;
        server_name  localhost;

        charset utf-8;

        access_log  logs/www.cxk.access.log;

        location / {
            root   /var/www/html/cxk;
            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.136.200:8848;
        server_name  localhost;

        charset utf-8;

        access_log  logs/www.kun.access.log;

        location / {
            root   /var/www/html/kun;
            index  index.html index.htm;
        }
error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
2. 重启测试 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【VRTK】【VR开发】【Unity】11-甩臂移动

课程配套学习资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【概述】 除了一般的移动能力,VRTK还提供更为沉浸的甩臂移动。 【设定摇杆输入中间件】 在Hierarchy中展开Button Input Actions,其下生成两个新的空子对象…

【Flink系列四】Window及Watermark

3.1、window 在 Flink 中 Window 可以将无限流切分成有限流&#xff0c;是处理有限流的核心组件&#xff0c;现在 Flink 中 Window 可以是时间驱动的&#xff08;Time Window&#xff09;&#xff0c;也可以是数据驱动的&#xff08;Count Window&#xff09;。 Flink中的窗口…

翻译: 生成式人工智能的经济潜力 第2部分行业影响 The economic potential of generative AI

麦肯锡报告 翻译: 生成式人工智能的经济潜力 第一部分商业价值 The economic potential of generative AI 1. 行业影响 在我们分析的63个使用案例中&#xff0c;生成式人工智能有潜力在各行各业创造2.6万亿至4.4万亿美元的价值。其确切影响将取决于各种因素&#xff0c;比如…

Qt之QGraphicsView —— 笔记1:绘制简单图元(附完整源码)

效果 相关类介绍 QGraphicsView类提供了一个小部件,用于显示QGraphicsScene的内容。QGraphicsView在可滚动视口中可视化。QGraphicsView将滚动其视口,以确保该点在视图中居中。 QGraphicsScene类 提供了一个用于管理大量二维图形项的场景。请注意,QGraphicsScene没有自己的视…

Open-Falcon(一)环境配置

目录 ip划分一、主机准备二、环境配置2.1修改主机名、修改hosts文件2.2配置阿里源&#xff0c;安装工具2.3关闭防火墙、selinux2.4配置时间2.5安装go2.6安装redis2.7 安装mysql初始化MySQL表结构 ip划分 主机名IP服务open-faclon-server192.168.150.200open-faclon-serverngin…

nodejs微信小程序+python+PHP的智能停车系统-计算机毕业设计推荐django

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

select*from 查询语句返回null

1. 写了一个很简单查询全部数据的demo接口,结果一直返回null. 数据库明明有数据而且在console控制台也可以查到,但是用接口访问一直返回null 2.后发现原来是数据库中字段名和对象的属性名称对不上&#xff0c;所以可以在yml文件中加上 mybatis:configuration:map-underscore-…

如何搭建一套完整的智能安防视频监控平台?关于设备与软件选型的几点建议

安防视频监控系统主要由前端摄像机设备、视频显示设备、视频存储设备、安防应用软件/平台以及其它传输、辅助类设备组成。一般来说&#xff0c;安防监控系统具有可扩展和开放性&#xff0c;以方便未来的扩展和与其他系统的集成。今天我们就来介绍一下&#xff0c;搭建一套完整的…

Kubersphere应用【四】创建SpringBoot项目

一、生成Springboot项目 【地址】https://start.spring.io/ Spring在线生成项目工具&#xff0c;可以快速生成Spring Boot项目。选择要的依赖项&#xff0c;填写基本信息&#xff0c;点击【GENERATE】就可以生成一个可运行的Spring Boot项目。 二、IDEA导入项目 生成项目后,进…

LAMP和分离式LNMP部署

目录 一.什么是LAMP&#xff1f; 二.安装LAMP 先安装apache&#xff0c;httpd网页服务&#xff1a; 接着安装mysql&#xff1a; 安装php&#xff1a; 创建论坛&#xff1a; 三.安装分布式LNMP&#xff1a; 先安装nginx&#xff1a; 到另一台主机安装php&#xff1a; …

dtm分布式事务框架之SAGA 实战

一.dtm分布式事务框架之SAGA 1.1DTM介绍 DTM是一款开源的分布式事务管理器&#xff0c;解决跨数据库、跨服务、跨语言栈更新数据的一致性问题。 通俗一点说&#xff0c;DTM提供跨服务事务能力&#xff0c;一组服务要么全部成功&#xff0c;要么全部回滚&#xff0c;避免只更…

javaTCP协议实现一对一聊天

我们首先要完成服务端&#xff0c;不然出错&#xff0c;运行也要先运行服务端&#xff0c;如果不先连接服务端&#xff0c;就不监听&#xff0c;那客户端不知道连接谁 服务端 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.Actio…

ncnn模型部署——使用VS2019把项目打包成DLL文件

一、项目打包成DLL文件 1.创建动态链接库DLL项目 创建完成&#xff0c;项目中包含源文件dllmain.cpp, pch.cpp&#xff0c;头文件framework.h, pch.h 2.编写和配置DLL项目 &#xff08;1&#xff09;配置pch.h文件&#xff0c;在头文件pch.h中定义宏&#xff0c;宏的作用的是…

gma 空间绘图实战(1):绘制多个子图,连接并展示局部放大区域

安装 gma&#xff1a;pip install gma 本文基于&#xff1a;gma 2.0.3&#xff0c;Python 3.10 本文用到的矢量数据为&#xff1a;CTAmap 1.12。来源于 https://www.shengshixian.com/ 。&#xff08;感谢锐多宝&#xff09; 绘图目标 参考代码 import matplotlib.pyplot as p…

电子秤ADC芯片CS1237技术资料问题合集

问题11&#xff1a;实际应用中&#xff0c;多个称重传感器应该怎么与ADC连接&#xff1f; 解答&#xff1a;如果传感器是测量同一物体&#xff08;例如&#xff1a;厨房垃圾处理器&#xff09;&#xff0c;一般建议使用并联的方式。则相同类型的信号线连接在一起。对于传感器的…

MySQL - 并发控制与事务的隔离级别

目录 第1关&#xff1a;并发控制与事务的隔离级别 第2关&#xff1a;读脏 第3关&#xff1a;不可重复读 第4关&#xff1a;幻读 第5关&#xff1a;主动加锁保证可重复读 第6关&#xff1a;可串行化 第1关&#xff1a;并发控制与事务的隔离级别 任务描述 本关任务&#…

Java第二十一章 :网络通信

网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java 已经将网络程序所需要的元素封装成不同的类&#xff0c;用户只要创建这些类的对象&#xff0c;使用相应的方法&#xff0c;即使不具备有关的网络支持&#xff0c;也可以编写出高质量的网络通信程…

十六、FreeRTOS之FreeRTOS队列集

本节需要掌握以下内容&#xff1a; 1&#xff0c;队列集简介&#xff08;了解&#xff09; 2&#xff0c;队列集相关API函数介绍&#xff08;熟悉&#xff09; 3&#xff0c;队列集操作实验&#xff08;掌握&#xff09; 一、队列集简介&#xff08;了解&#xff09; 一个…

硬件基础:差模和共模

一直以来&#xff0c;都难以理解差模和共模这两个概念&#xff0c;什么差分信号、差模信号、共模信号&#xff0c;差模干扰、共模干扰……虽然看了一些资料&#xff0c;但貌似说法还挺多的&#xff0c;理解起来仍然是一头雾水。所以&#xff0c;专门用一篇文章来好好研究下这个…

Anisble中剧本的应用

1.什么是playbook及playbook的组成 1. Playbook 的功能 playbook 是由一个或多个 play 组成的列表 Playboot 文件使用 YAML 来写的 2. YAML 简介&#xff1a; 是一种表达资料序列的格式 &#xff0c; 类似 XML Yet Another Markup Language 3. 特点 可读性好 和脚本语言…