Nginx网络服务的配置

news2024/12/27 13:56:26

目录

一、Nginx概述

二、Nginx相对于Apache的优点

三、配置Nginx网络服务

1.编译安装和启用Nginx服务

2.修改Nginx主配置文件


一、Nginx概述

Nginx是一款高性能、轻量级Web服务软件。稳定性高,系统资源消耗低,对HTTP并发连接的处理能力高,单台物理服务器理论上可支持 30 000~50 000 个并发请求,实际约 2~3 万。

二、Nginx相对于Apache的优点

  1. 轻量化,Nginx 比 Apache占用更少的内存及资源;

  2. 静态处理,Nginx 静态处理性能比 Apache 高;

  3. Nginx可以实现无缓存的反向代理加速,提高网站运行速度;

  4. Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于硬件;

  5. Nginx支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级;

  6. nginx是异步进程,多个连接可以对应一个进程;apache是同步多进程,一个连接对应一个进程;

  7. Nginx高度模块化,编写模块相对简单,且组件比Apache少;

  8. 高并发下Nginx 能保持低资源低消耗高性能;

  9. Nginx 配置简洁,Apache配置复杂;

三、配置Nginx网络服务

需要准备Nginx源码包nginx-1.12.0.tar.gz

1.编译安装和启用Nginx服务

(1)关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

(2)安装依赖包

nginx的配置及运行需要pcre、zlib、openssl等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

(3)创建运行用户、组(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)

useradd -M -s /sbin/nologin nginx

(4)编译安装Nginx源码包

#在opt目录下解压源码包
cd /opt
tar zxf /tmp/VMwareDnD/npLsWu/nginx-1.12.0.tar.gz
​
#到源码包中自定义编译安装
cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \                 #指定nginx的安装路径
--user=nginx \                              #指定用户名
--group=nginx \                             #指定组名
--with-http_stub_status_module              #启用 http_stub_status_module 模块以支持状态统计
​
#编译安装
make && make install
​
#让系统识别nginx的操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

(5)nginx服务的检查、启动、重启、停止、生成日志和升级

nginx -V //查看版本和编译安装选项(-v 只查看版本号)

img

nginx -t //检查nginx配置文件的语法

img

nginx //开启nginx服务

img

cat nginx.pid //查看nginx进程pid号

img

kill -3 pid号 //关闭nginx服务 kill -s QUIT pid号

img编辑

kill -1 pid号 //重载nginx服务 kill -s HUP pid号

img

kill -USR1 pid号 //重新生成日志文件(用于分割日志到系统日志文件目录下)

img

kill -USR2 pid号 //平滑升级nginx版本(需要提前编译好新版的安装包,然后能在服务不关闭的情况下升级)

img

编译后查看

img

img

只需要替换原版安装的nginx文件即可完成升级(可先做备份)

img

img

注意点(不影响升级):

make upgrade过程中报的错是由于nginx不是通过/usr/local/nginx/sbin/nginx启动的,而是通过$PATH中的软连接启动的。

解决办法:

要保证当前 nginx 进程是通过 /usr/local/nginx/sbin/nginx 启动的;或者先 killall nginx ,再使用 /usr/local/nginx/sbin/nginx 。

(6)添加 nginx 系统服务(通过systemctl管理)

chkconfig:2345 20 90 代表服务在2345启动级别中,第20个进程自启,第90个进程关闭。

chkconfig:- 代表不开机自启 

#编写服务配置文件
vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: 2345 20 99
#description:Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
  $COM
;;
​
stop)
  kill -s QUIT $(cat $PID)
;;
​
restart)
  $0 stop
  $0 start
;;
​
reload)
  kill -s HUP $(cat $PID)
;;
​
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
​
esac
exit 0
​
#添加到系统服务
chmod +x /etc/init.d/nginx
chkconfig --add nginx
systemctl stop nginx
systemctl start nginx

 

img

2.修改Nginx主配置文件

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

img

所有配置字段块的作用

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

(1)修改全局配置

img

Nginx的两种进程:

  • 主进程(master process),用于管理工作进程。

  • 工作进程(work process),用于处理用户的连接(一般设置数与cpu总线程数一致)。

img

修改为与本机cpu数一致

img

将work进程与特定物理cpu核心绑定(避免切换核心,提高性能)

img

双核设为 worker_cpu_affinity 01 10;

(2)添加 I/O事件配置

img

默认只有一行配置,添加use epoll; 表示使用epoll I/O模型,可以提高性能

(2.6及以上版本的系统内核,建议使用epoll模型)

img

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

由于一个nginx服务器最大可以支持2~3万连接数,我们需要根据本机工作进程数修改每个进程支持的连接数(如我本机设置为8,约可修改为3500)

如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数(永久修改需要修改/etc/security/limits.conf 文件)

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

img

临时修改

img

永久修改

修改/etc/security/limits.conf文件,添加如下字段

注意

  • 软限制soft 和硬限制hard 必须都添加才能生效

  • 软限制值 <= 硬限制值

  • 重启系统后生效!!!

img

重启后查看

img

(3)HTTP配置

img

日志格式设定

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

其中的server字段代表站点web服务配置(有几个站点就有几个server字段)

img

img

img

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

root(根路径配置)root 后加路径,代表指定网页根路径,默认值是html(相对路径,代表/usr/local/nginx/html),location 后的 / ,代表root指定路径的根。

例:location /test , root /var/www/html , 代表访问指定根路径/var/www/html 下的 /test 中的页面 。

alias(别名配置)在location 指定路径的字段定义别名,之后访问指定路径,就是别名指定的路径。

例: location /test ,alisa /var/www/html ,访问服务器地址下的 /test 目录 ,指向的是/var/www/html 中的页面。

proxy_pass(反向代理配置

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

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

相关文章

DNS 监控工具

域名系统 &#xff08;DNS&#xff09; 解析&#xff08;也称为 DNS 查找&#xff09;是在现代 IT 基础架构中建立连接和通信所需的基本组件之一。这是将人类可读的域或主机名与机器可读的 IP 地址映射的过程&#xff0c;使用户更容易访问组织的公共和专用网络上的主机。在最基…

SpringBoot 三级缓存解决循环依赖源码分析

文章目录 1. 不使用三级缓存可能存在的问题2. 源码分析2.1 对象实例的创建过程2.2 三级缓存的处理 3. 遗留问题 1. 不使用三级缓存可能存在的问题 在 SpringBoot 框架中&#xff0c;如果只存在两级缓存&#xff0c;那么当发生循环依赖的时候可能存在异常的对象创建流程如下图所…

如何解析 Impala 的 C++ 报错堆栈

生产环境用的都是release build&#xff0c;C代码产生的报错堆栈里没有函数名&#xff0c;很难像Java报错堆栈那样方便定位问题。下面是一个常见的启动报错&#xff0c;一般在CLASSPATH设置有误时发生&#xff1a; I0619 19:13:00.951988 5279 status.cc:129] Failed to find…

【全新升级版】R语言实战(第3版),超过30万学习者入手的R语言教程

在我刚入学那会儿初次接触R语言&#xff0c;看的第一本工具书就是《R语言实战》&#xff0c;收获良多&#xff0c;当时还只是第二版。最近和人民邮电出版社的好朋友交流发现&#xff0c;他告诉我上个月刚刚出版了《R语言实战 第三版》 &#xff0c;豆瓣评分9.2&#xff0c;被称…

Linux之生产者消费者模型(上)——单生产者单消费者

文章目录 前言一、生产者消费者模型1.生产消费2.生产消费关系321原则生产消费模型的特点 二、基于阻塞队列&#xff08;blockqueue&#xff09;的生产消费模型1.概念2.单生产单消费模型代码运行分析两种情况导致的现象生产者生产的慢&#xff0c;消费者消费的快生产者生产的快&…

精彩回顾 | “XR云新未来:弹性算力赋能可交互、沉浸式商业实践” 赋能云端虚拟世界

6月15日&#xff0c;由平行云联合首都在线共同主办&#xff0c;中关村软件园协办&#xff0c;以“XR云新未来|弹性算力赋能可交互、沉浸式商业实践”为主题的XR行业交流盛会在北京成功举办。 活动邀请多位XR行业大咖&#xff0c;共同见证首都在线联合平行云发布Cloud XR平台。…

MySQL数据库——索引

MySQL数据库——索引 一、索引基本常识1.索引的概念2.索引的作用3.创建索引的依据 二、索引的分类1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引 三、索引的查看与删除1.查看索引2.删除索引 一、索引基本常识 数据库索引是数据库管理系统中一个排序的数据结构&#xff0…

OpenGL 深度测试

1.简介 深度缓冲就像颜色缓冲(Color Buffer)&#xff08;储存所有的片段颜色&#xff1a;视觉输出&#xff09;一样&#xff0c;在每个片段中储存了信息&#xff0c;并且&#xff08;通常&#xff09;和颜色缓冲有着一样的宽度和高度。深度缓冲是由窗口系统自动创建的&#xf…

6 从0开始学PyTorch | 构建模型、损失函数、广播机制

前面都在学一些PyTorch的基本操作&#xff0c;从这一节开始&#xff0c;真正进入到模型训练的环节了。原作者很贴心的一步步教我们实现训练步骤&#xff0c;并且还从一个最简单的例子出发&#xff0c;讲了优化方案。 宏观上的训练过程 image.png 当然这里所说的训练还没有到深…

vue进阶-vue-cli

CLI是Command-Line Interface&#xff0c;翻译为命令行界面&#xff0c;但是俗称脚手架。 Vue-CLI是一个官方发布 vue.js 项目脚手架&#xff0c;使用 vue-cli 可以快速搭建 Vue 开发环境以及对应的 webpack 配置。 vue项目相关文件以 .vue 为后缀&#xff0c;需要事先安装 N…

【LeetCode热题100】打卡第25天:柱状图中最大的矩形

文章目录 柱状图中最大的矩形⛅前言&#x1f512;题目&#x1f511;题解 柱状图中最大的矩形 ⛅前言 大家好&#xff0c;我是知识汲取者&#xff0c;欢迎来到我的LeetCode热题100刷题专栏&#xff01; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xf…

GEE:绘制一个点的Landsat1985-2020年逐日NDVI时间序列折线图

作者:CSDN @ _养乐多_ 本文记录了在GoogleEarthEngine(GEE)平台上选择一个点,根据该点在时间段内所有有效像素值绘制折线图的代码。 结果如下图所示, 文章目录 一、代码二、代码链接一、代码 var roi = geometry Map.addLayer(roi, {color

6.15集合1 和 泛型

举例 1&#xff1a;中药店&#xff0c;每个抽屉外面贴着标签 举例 2&#xff1a;超市购物架上很多瓶子&#xff0c;每个瓶子装的是什么&#xff0c;有标签 举例 3&#xff1a;家庭厨房中 集合 我们接下来要学习的内容是Java基础中一个很重要的部分&#xff1a;集合 1 Coll…

【服务器数据恢复】AIX下raid故障导致pool无法加载的数据恢复案例

服务器数据恢复环境&#xff1a; IBM P740小型机AIX操作系统Sybase数据库V7000存储。V7000存储配置了12块SAS机械硬盘&#xff08;其中一块为热备盘&#xff09;组建一组raid5磁盘阵列。存储设备一共创建了2组Mdisk&#xff0c;加到一个pool中。 服务器故障&#xff1a; IBM V…

网络管理与维护(三)网络安全

网络安全 网络安全威胁 非授权访问 信息泄漏 破坏数据完整性 拒绝服务攻击 利用网络传播病毒 安全服务和安全机制 总结 1.通常可以把网络信息安全的问题划分为物理层、网络层、数据层和内容层四个层面。 2.网络存在的威胁主要表现&#xff1a; 非授权访问、信息泄漏、破坏数…

基于Django+Vue开发的社区疫情管理系统(附源码)

基于Django、Django Rest framework、Vue的前后端分离的社区疫情管理系统。 一、系统功能 用户管理&#xff08;只有管理员有权限&#xff09; 用户注册用户登录修改用户信息删除用户修改密码权限管理 首页数据展示 国内疫情数据展示国内疫情新闻近30日的感染人数&#xff08;…

【论文阅读】Adap-t: Adaptively Modulating Embedding Magnitude for Recommendation

【论文阅读】Adap-&#x1d70f;: Adaptively Modulating Embedding Magnitude for Recommendation 文章目录 【论文阅读】Adap-&#x1d70f;: Adaptively Modulating Embedding Magnitude for Recommendation1. 来源2. 介绍3. 模型解读3.1 准备工作3.1.1 任务说明3.1.2 基于嵌…

Linux:http服务(Apache 2.4.57)源码编译——配置网站 || 入门到入土

目录 1.下载源码包 2.配置httpd运行环境 3.编译源码包安装apache软件 4.优化执行路径 5.添加httpd系统服务 正文 1.httpd服务器的基本配置 2.本章持续更新 我的服务器为centos7系统 1.下载源码包 访问官方网站↓↓↓ Welcome! - The Apache HTTP Server Project ↑↑…

ONLYOFFICE Docs 7.4 版本大大增强了图形编辑功能!

ONLYOFFICE Docs 7.4 版本大大增强了图形编辑功能&#xff01; 书接上文&#xff1a; 北冰洋汽水我的最爱https://mp.weixin.qq.com/s?__bizMzI2MjUyNzkyNw&mid2247493734&idx1&sn416c4ee5756ea59883591d3c2c4a6ae4&chksmea4b66bedd3cefa89050e25b661e0be16…

malloc 背后的虚拟内存 和 malloc实现原理

面试的时候经常会被问到 malloc 的实现。从操作系统层面来说&#xff0c;malloc 确实是考察面试者对操作系统底层的存储管理理解的一个很好的方式&#xff0c;涉及到虚拟内存、分页/分段等。下面逐个细说。 1. 虚拟内存 首先需要知道的是程序运行起来的话需要被加载的物理内存…