Nginx安装、配置

2023-11-03

一、Nginx概述(特点)

Nginx (engine x) 是一个轻量级的、高性能的、基于Http的、反向代理服务器,静态web服务器。具有以下特点

1、高并发

一个Nginx服务器在不做任何配置的情况下并发量可达1000左右。在硬件条件允许的前提下,Nginx可以支持高达5-10万的并发量(除了Nginx的设置外,Linux主机需要做大量的设置来配合Nginx)。

对比一下Tomcat。Tomcat服务器默认的并发量为150(不做任何配置)。即,当有超过150个用户同时访问某Servlet时,Tomcat的响应就会变得非常慢

2、低消耗

官方给出的测试结果,10000个非活跃连接,在Nginx中仅消耗2.5M内存。对于一般性的DoS攻击来说就不是事儿,但对于DDoS也会是问题

3、可靠

可以在7*24小时不间断服务的前提下,进行Nginx版本的平滑升级,Nginx配置文件的平滑修改。即在不停机的情况下升级Nginx,修改替换Nginx配置文件。

4、高可用

Nginx之所以可以实现高并发,是因为其具有很多工作进程worker。当这些工作进程中的某些出现问题停止工作时,并不会影响整个系统的整体运行。因为其它worker会接替那些出问题的线程

5、高扩展

Nginx只所以现在的用户很多,是因为很多功能都已经开发好并模块化。若需要哪些功能,只需要安装相应功能的扩展模块即可。根据编写扩展模块所使用的语言的不同,可以划分为两类:C语言扩展模块与LUA脚本扩展模块。 OpenResty® - 中文官方站

二、主要版本

nginx开源版本有很多 这里主要介绍四个

1、nginx原始开源版 没有额为功能 主要完成网站服务器 代理服务器 反向代理

nginx news

2、nginx plus商业版本 原始nginx加强版 加了许多功能

Advanced Load Balancer, Web Server, & Reverse Proxy - NGINX

3、openrestry, lua脚本和nginx整合

OpenResty® - 中文官方站

4、Tengine

淘宝网基于原始nginx加了许多额外功能

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

The Tengine Web Server

三、Nginx主要应用

  • http服务器:Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
  • 虚拟主机:可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
  • 反向代理、负载均衡、动静分离 当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

四、nginx安装

1、window安装

下载地址:nginx: download

解压zip文件 双击nginx.exe即可运行

访问:localhost

2、Linux安装

如果安装过nginx 卸载如下

yum remove nginx

然后使用find / -name nginx*

/etc/yum.repos.d/nginx.repo
/etc/nginx
/var/lib/yum/repos/x86_64/7/nginx
/var/cache/nginx
/var/cache/yum/x86_64/7/nginx
/var/log/nginx

使用rm -rf file 复制上面的路径以此删除即可

安装方式一(推荐):下载tar资源包编译安装

下载地址nginx: download

下载.tar.gz文件并上传到Linux服务器上

或者直接在Linux上使用wegt命令下载

wget http://nginx.org/download/nginx-1.20.2.tar.gz

解压

tar -zxvf nginx-1.20.2.tar.gz

先安装需要的环境

yum install -y gcc
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

开始编译

cd nginx-1.20.2/
./configure --prefix=/usr/local/nginx	#安装到指定的位置
make  #编译
make install  #安装


启动Nginx 进入安装好的目录 /usr/local/nginx/sbin

其中 client_body_temp fastcgi_temp proxy_temp scgi_temp 这几个文件夹在刚安装后是没有的,主要用来存放运行过程中的临时文件

./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置

安装成系统服务

创建服务脚本

vi /usr/lib/systemd/system/nginx.service

服务脚本内容

[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target

重新加载系统服务

systemctl daemon-reload

安装成系统服务以后 就可以系统服务的方式启动nginx

systemctl start nginx.service

开机启动

systemctl enable nginx.service

安装方式二:通过Nginx官方提供的Yum源安装。这里环境centos7

1、添加源

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

2、通过yum search nginx看看是否已经添加源成功。如果成功则执行下列命令安装Nginx。

sudo yum install -y nginx

查看安装位置

find /|grep nginx.conf

nginx和其模块的工作方式是由配置文件决定的。默认的配置文件名是nginx.conf。默认的放置路径在 /usr/local/nginx/conf, /etc/nginx (CentOS), 或者 /usr/local/etc/nginx (MAC OS). 根据你的系统而有所不同。

3、启动Nginx并设置开机自动运行

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

4、浏览查看效果

在浏览器中输入您的服务器地址:http://www.dearcloud.cn/

五、目录结构

进入Nginx的主目录我们可以看到这些文件夹

client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp

其中这几个文件夹在刚安装后是没有的,主要用来存放运行过程中的临时文件 client_body_temp fastcgi_temp proxy_temp scgi_temp

conf

用来存放配置文件相关

html

用来存放静态文件的默认目录 html、css等

sbin

nginx的主程序

六、nginx原始配置文件

#子进程worker 配置原则 一个cpu有几个内核 就配置几个
worker_processes  1;

events {
	#一个worker进程连接数
    worker_connections  1024;
}

http {
	#include可以引入多个文件 这里的mime.types
	#告诉浏览器返回什么类型 具体可以查看这个文件,比如text/html html htm shtml;
	#说明html htm shtml文件则浏览器通过text/html方式展示 
	#当然如果没有在这个文件的可以自己定义,没有找到则使用下面默认的 default_type  application/octet-stream;
    include       mime.types;
    default_type  application/octet-stream;
	
	#数据零拷贝 
    sendfile        on;

	#一个server就是一个虚拟主机
    server {
		#监听当前服务器端口号
        listen       80;
		#主机名 或者域名
        server_name  localhost;

        location / {
			#这里的root是网站根目录的逻辑概念,物理表示文件夹。
			#所以既不是linux的root目录,也不是nginx的根目录。
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

sendfile on; 使用linux的 sendfile(socket, file, len) 高效网络传输,也就是数据0拷贝。 未开启sendfile

 

开启sendfile后

 

 

七、nginx运行基本原理

nginx启动之后会启动多个进程,已经不是多个线程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx安装、配置 的相关文章

  • Lua 从 5.1 更新 - LUA_GLOBALSINDEX 问题

    我最近将旧的 Lua 5 1 项目更新到了该库的最新版本 但遇到了问题LUA GLOBALSINDEX 它变得不确定 我只用过它lua getfield函数 像这样 void luastartgame void if startgamefu
  • Lua中如何在另一个表的表成员中搜索

    我正在编写一个 lua 程序 它有一个表 该表是另一个表的成员 当我向该成员表添加新日期时 一切正常 但是 当我想在该表中搜索时 无论我给出什么键 我总是会将最后一行添加到表中 如何在该成员表中正确搜索 Stream name functi
  • Nginx 中 uwsgi_pass 和 proxy_pass 的区别?

    我在 Nginx 后面运行 uWSGI 并一直在使用proxy pass让 Nginx 访问 uWSGI 切换到有什么好处吗uwsgi pass 如果是这样 那是什么 uwsgi pass使用一个uwsgi协议 proxy pass使用普通
  • lua中的权限问题

    是否需要在 corona build settings 中设置一些特定权限才能将高分永久保存在文件中 每次运行代码时都会出现 权限被拒绝 的错误 如何纠正这个错误 这是我尝试过的代码 function read score local f1
  • 如何在位置中使用 Nginx Regexp

    Web 项目将静态内容放入 some content img 文件夹中 url规则为 img some md5 但文件夹中的位置 content img 前两位数字 Example url example com img fe5afe048
  • 在Lua中获取前一天的日期

    谁能告诉我如何使用 Lua 获取 YYYY MM DD 格式的前一天日期 即 一个片段 它将返回运行当天的前一天的日期 Try print os date Y m d os time 24 60 60 严格来说 这只能保证在 POSIX 系
  • 如何在运行 NGINX Docker 容器的 AWS EC2 上启用 HTTPS?

    我在 AWS 上有一个运行 Amazon Linux 2 的 EC2 实例 在上面 我安装了 Git docker 和 docker compose 完成后 我克隆了我的存储库并运行docker compose up让我的生产环境启动 我访
  • 将应用程序级别用户名/用户 ID 注入 nginx/Apache 日志

    有没有办法将应用程序级别的用户名或 id 在本例中为 django 用户名或 id 注入 Apache 或 ngnix 日志中 请注意 我不是询问 HTTP 身份验证用户名 我目前正在使用一个简短的自定义中间件将此数据添加到响应标头 如下所
  • 比较 Lua 中的日期

    我有一个带有日期表的变量 如下所示 table day number 15 year number 2015 month number 2 如何获取当前日期与上述日期之间的天数 非常感谢 您可以使用os time 将表转换为秒并获取当前时间
  • 使用nginx容器作为反向代理时的原始url

    我有一个 Web 应用程序部署为码头集装箱 我也有一个nginx容器 使用dnsmasq解析器 设置为充当 Web 应用程序前面的反向代理 它的 80 端口映射到主机 我的应用程序使用 SSO 身份验证 当我使用身份提供商登录时 回调 ur
  • 如何在我的 Lua 脚本中添加“睡眠”或“等待”?

    我正在尝试通过更改一天中的时间来为游戏制作一个简单的脚本 但我想快速完成 这就是我要说的 function disco hour minute setTime 1 0 SLEEP setTime 2 0 SLEEP setTime 3 0
  • Docker 中的 NGINX 缓存 IP 地址并提供错误的 Content-Type

    Summary 我想让NGINX 不是NGINX Plus 通过使用变量从DNS名称重新解析IP地址proxy pass 如建议的这篇 Nginx 官方文章 在变量中设置域名 部分 https www nginx com blog dns
  • NGINX 上的 SSL 终止

    我已经购买了 SSL 证书 并在验证模数时正确地将其捆绑在一起 即https kb wisc edu middleware 4064 https kb wisc edu middleware 4064 那么哈希值是相同的 我已将证书和密钥移
  • Openresty 中的并发模型是什么?

    我很难理解 openresty 或 nginx 的并发模型 我读了Lua变量作用域 http wiki nginx org HttpLuaModule Lua Variable Scope 它解释了变量的生命周期 但它没有说明对它们的并发访
  • 如何使用gunicorn和bokeh服务配置Nginx

    我想提供一个 Flask 应用程序 该应用程序使用本地网络服务器上的嵌入式散景服务 为了说明这一点 我使用了一个例子散景服务示例 https github com bokeh bokeh blob 0 12 11 examples howt
  • Nginx merge_slashes 重定向

    我在我的 Java 应用程序中使用 nginx 我的问题是 nginx 正在合并斜杠 我无法将我的网站重定向到正确的版本 例如 http goout cz cs koncerty praha 被合并到 http goout cz cs ko
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    最新更新 脚本作为管理员用户通过 SSH shell 作为 php script php 成功运行 当由 nginx 用户运行时 curl 命令无法执行 https 请求 所以我猜测这是nginx用户无法正确使用curl的问题 我已经检查了
  • 如何配置 nginx 重写规则以使 CakePHP 在 CentOS 上运行?

    大家好 请帮帮我 我正在尝试在运行 Nginx 和 Fact CGI 的 Centos 服务器上设置 cakephp 环境 我已经在服务器上运行了一个 WordPress 站点和一个 phpmyadmin 站点 因此我已经正确配置了 PHP
  • Lua 上的 For 循环

    我的作业是如何执行 for 循环 我已经从数字上弄清楚了 但无法从名称上弄清楚 我想创建一个 for 循环来运行名称列表 以下是我到目前为止所拥有的 names John Joe Steve for names 1 3 do print n

随机推荐

  • 免费使用 GPT-4 和 GPT-3.5 新方法:无限使用,随时切换,牛逼!

    点击上方 芋道源码 选择 设为星标 管她前浪 还是后浪 能浪的浪 才是好浪 每天 10 33 更新文章 每天掉亿点点头发 源码精品专栏 原创 Java 2021 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网
  • 数据链路层 PPP协议

    传输数据前 需建立ppp会话 1 链路建立阶段 LCP建立 LCP一个协议 链路控制协议 2 认证阶段 可选项 PAP协议 CHAP协议 3 网络层协商协议 NCP协商 NCP协议是一堆协议总称 网络控制协议 如果三层使用IP协议 使用IP
  • 查看oracle数据库的用户名和密码 /用户解锁/创建新用户/解决ORA01034和27101

    运行 cmd 按如下输入命令 sqlplus as sysdba 以sys登陆 超级用户 sysdba alter user 用户名 account unlock 解除锁定 必须带 号 alter user 用户名 identified 密
  • anaconda基本命令

    Anaconda基本命令 文章结构 环境相关 更新 查看所有环境 创建新环境 切换环境 查看当前环境下的功能包 删除环境 下载管理 下载换源 相关包下载 jupyter notebook相关 下载 切换文件位置 切换环境 所有命令都是在an
  • 禁用 Windows 10/11 更新(可自由设置时间长短)

    禁用和恢复 Windows 更新 一 禁用 Windows 10 11 的原因 二 禁用 Windows 10 11 更新 三 恢复 Windows 10 11 更新 一 禁用 Windows 10 11 的原因 作为一个现代化的系统 Wi
  • MySQL查询多个版本数据只取最新版本

    前言 最近接到新的客户需求 在查询指标时要求相同的指标只显示一条数据 要显示的那条数据的要求如下 1 如果同一个指标的不同版本中有一条是处于上线状态 则显示该条数据 不管版本号是多少 2 如果该条指标没有处于上线状态的版本 则展示最高版本的
  • 【华为OD机试真题】新员工座位安排系统(统计友好度最大值)(python)100%通过率 超详细代码注释 代码优化

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 新员工座位安排系统 知识点数组统计哈希表差分滑窗 时间限制 1s空间限制 256MB限定语言
  • 训练模型准确率上不去,可以提升准确率的一种情况(常常忽略)。

    最近在弄毕业设计 不论怎么调lstm的模型结构 精确度都太低 最后调整了一下一直忽略的学习率 发现上升了好几个百分点 这算是一个令人忽略的点吧
  • UE4-上传图片到服务器

    上传图片 1 Httplib 库优缺点 2 上传图片 3 删除本地图片缓存 IPlatformFile 由于 VaRest 插件无法满足我们上传表单的需求 在这里需要使用其他库方法 1 Httplib 库优缺点 优点 httplib 库是一
  • C++ NUM4

    c 数字 c 内置丰富的数学函数 引用数学头文件
  • Tkinter(二) | 点击按钮显示图片

    解决办法 出现的问题 from tkinter import from PIL import Image ImageTk root Tk root title 按钮点击加载图片 def show img Image open 1 png 打
  • Java中接口中的方法定义规范

    1 接口中是可以定义静态方法的 静态方法必须要有实现 且这个静态方法只能用public修饰 例如 public static void test 或 static void test public省略不写默认也是用public来修饰 静态方
  • 服务计算——Docker 简单使用

    Docker 简单使用 Docker是一个应用容器引擎 使用者可以将其应用以及所有需要的依赖打包到一个包中 然后发布到机器上进行运作 接下里我们就一步步了解一些Docker的使用 Docker安装 sudo apt get install
  • STM32-GPIO输入

    点亮LED灯的实验室利用的GPIO的输出配置来实现的 接下来写一个关于GPIO作为输入的程序 同时点亮和熄灭LED灯 由于程序简单 直接贴出代码 以供参考 include stm32f10x h brief 初始化GPIO 默认速度为GPI
  • 判断英伟达显卡计算力及是否支持FP16和INT8

    文章目录 1 检查显卡的计算力 打开 官网 检查你相应型号显卡的算力 比如GTX1080 is 6 1 Tesla T4 is 7 5 2 检查是否支持FP16和INT8 打开网页查看
  • Python 3.11.3在Windows 11下的简易安装教程

    撰写时间 2023年4月6日 本文目的 帮助电脑小白快速安装最新版本的Python 并通过控制台输出第一个Python语句 Hello World 前言 Python是一种高级编程语言 具有简单易学 代码简洁 功能强大 可移植性佳等特点 由
  • 《30天自制操作系统》harib09c的编译和调试

    今天是 30天自制操作系统 学习的第12天 今天的工程目录是harib09c 我起的目录名称是day12 boyC 我们一起来调试一下 在day12 boyC目录下直接运行make命令就开始编译了 如下图所示 编译的结果如下 部分截取 E
  • Java Interface

    Java接口中的成员变量的修饰符都是 public的 static的 final 的 类这么写错的 一个类不能既是final 又是abstract的 因为abstract 因为类被继承使用 而 final却不允许类被继承 这是自相矛盾的 p
  • 从零开始学WEB前端——VUE脚手架

    项目介绍 先做个自我介绍 本人是一个没人写前端所以就自学前端的后端程序员 在此项目中我会和大家一起从零基础开始学习前端 从后端程序员的视角来看前端 受限于作者的水平本项目暂时只会更新到前端框架VUE 不会涉及node js 该项目适合零基础
  • Nginx安装、配置

    一 Nginx概述 特点 Nginx engine x 是一个轻量级的 高性能的 基于Http的 反向代理服务器 静态web服务器 具有以下特点 1 高并发 一个Nginx服务器在不做任何配置的情况下并发量可达1000左右 在硬件条件允许的