当前位置: 首页 > news >正文

如何系列 如何在Windows和Linux安装Nginx

文章目录

    • Windows
      • 一 下载Nginx
      • 二 启动Nginx
      • 三 验证
    • Linux
      • 一 安装依赖项
      • 二 下载Nginx源码包
      • 三 安装
      • 四 验证
      • 五 常用命令
      • 附录

Nginx是一款高性能的开源Web服务器和反向代理服务器,被广泛用于构建现代化的Web应用和提供静态内容。本篇博文将教你如何在Windows和Linux操作系统上安装Nginx,以便你能够轻松搭建自己的Web服务器。

  • 开源版本官网:https://nginx.org/
  • 开源版本文档:https://nginx.org/en/docs/
  • 开源版本下载地址:https://nginx.org/en/download.html

Nginx有两个版本可供选择:开源版本(Nginx Open Source)和商业版本(Nginx Plus)

商业版本:https://www.nginx.com/

Windows

一 下载Nginx

从https://nginx.org/en/download.html查找最新的版本,使用Stable version版本。

二 启动Nginx

解压启动

在cmd中执行命令

unzip nginx-1.24.0.zip
cd nginx-1.24.0
# 启动nginx
start nginx

查看nginx进程

$ tasklist /fi "imagename eq nginx.exe"

其中一个进程是master进程,另一个是worker进程。如果nginx没有启动,在错误日志文件中logs\error.log查找原因。

其他命令

nginx -s stop	快速关机
nginx -s quit	优雅关机
nginx -s reload	更改配置、使用新配置启动新工作进程、正常关闭旧工作进程
nginx -s reopen	重新打开日志文件

三 验证

验证http:

  • 在Web浏览器中访问您配置为使用HTTP的Nginx服务器(例如:http://www.laker.com)
  • 浏览器验证:http://localhost

Linux

安装分为在线安装和源码安装,建议源码安装,因为可以自定义插件。

一 安装依赖项

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

二 下载Nginx源码包

从https://nginx.org/en/download.html查找最新的版本,使用Stable version版本。

# 例如如下版本
wget https://nginx.org/download/nginx-1.24.0.tar.gz

三 安装

1. 解压源码包:

tar -zxvf nginx-X.XX.X.tar.gz

2. 进入解压后的目录:

cd nginx-X.XX.X

3. 配置编译选项,包括启用HTTPS支持:

./configure --prefix=/usr/local/nginx1.24.0 --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module
  • --prefix=path:默认路径为/usr/local/nginx,可不配置

  • --with-http_ssl_module:配置Nginx以启用HTTPS模块

  • --with-http_v2_module:配置Nginx以启用HTTP2模块

  • --with-http_stub_status_module:启用状态监控模块,允许查看Nginx的运行状态和统计信息

    location /nginx_status {stub_status;# allow 127.0.0.1;# deny all;
    }
    通过访问http://your-domain.com/status来查看状态页面。
    https://nginx.org/en/docs/http/ngx_http_stub_status_module.html
    
  • --with-http_realip_module:启用真实IP模块,用于从代理服务器接收到的请求中提取真实的客户端IP地址。

http {...set_real_ip_from 192.168.1.0/24;real_ip_header X-Forwarded-For;...
}
这将启用真实IP模块,并从X-Forwarded-For头部提取客户端的真实IP地址,同时指定代理服务器的IP地址范围。
  • --with-threads:启用线程支持,以充分利用多核处理器的性能。
  • --with-stream:启用TCP/UDP代理模块,用于实现基于Nginx的负载均衡和代理服务。
stream {...upstream backend {server backend1.example.com:12345;server backend2.example.com:12345;}server {listen 12345;proxy_pass backend;}
}
  • --with-pcre:启用PCRE库支持,用于支持正则表达式匹配。

4. 编译和安装Nginx:

# 编译
make
# 安装到上面指定的目录,就是把相关文件copy到指定目录
sudo make install

执行make命令后生成objs文件夹,此时还未安装到 --prefix=/usr/local/nginx1.24.0指定的目录。

然后执行sudo make install命令,此时就可以去/usr/local/nginx1.24.0目录了,安装copy完成。

5. 启动Nginx:

cd /usr/local/nginx1.24.0/sbin
sudo nginx

四 验证

1. 验证http:

  • 在Web浏览器中访问您配置为使用HTTP的Nginx服务器(例如:http://www.laker.com)

2. 验证HTTPS支持:

  • 在Web浏览器中访问您配置为使用HTTPS的Nginx服务器(例如:https://www.laker.com)
  • 如果成功加载并显示通过SSL加密的网页,则表明HTTPS支持已启用。

3. 验证HTTP/2支持:

  • 在Web浏览器中访问您配置为使用HTTP/2的Nginx服务器(例如:https://www.laker.com)
  • 打开浏览器的开发者工具(通常可以通过右键单击网页并选择"检查"或"开发者工具"来打开)。
  • 在开发者工具的"网络"选项卡中,查看协议列。如果显示为"HTTP/2",则表示HTTP/2支持已启用。

4. 验证gzip静态模块:

  • 在Web浏览器中访问您的Nginx服务器上的静态文件(例如:https://www.laker.com/static/file.css)。
  • 检查响应头中的"Content-Encoding"字段是否包含"gzip",表示gzip压缩已应用。

5. 验证状态监控模块:

  • 在浏览器中访问配置的状态监控URL(例如:http://www.laker.com/nginx_status)。
  • 如果成功访问并显示Nginx的状态信息,表示状态监控模块已启用。
Active connections: 3  # 当前活动客户端连接数,包括Waiting连接数。
server accepts handled requests12 12 1636 
Reading: 0 Writing: 2 Waiting: 1 
  • accepts:接受的客户端连接总数,示例中为12个。

  • handled:处理的连接总数,示例中为12个。

  • requests:客户端请求的总数,示例中为1636个。

  • Reading:nginx 正在读取请求标头的当前连接数。

  • Writing:nginx 将响应写回客户端的当前连接数。

  • Waiting:当前等待请求的空闲客户端连接数。

  • https://nginx.org/en/docs/http/ngx_http_stub_status_module.html

五 常用命令

#启动Nginx
nginx
#检查Nginx配置是否正确,如果配置没有错误,将显示一条成功消息
nginx -t
#重新加载配置,重启Nginx以使更改生效
nginx -s reload
#停止Nginx 快速关机
nginx -s stop
#停止Nginx 优雅关机
nginx -s quit
#查看Nginx的版本信息
nginx -v
# 查看Nginx编译时的配置参数
nginx -V

附录

HTTP/2特性

特性HTTP/1HTTP/2
多路复用(Multiplexing)不支持,使用多个TCP连接支持,通过单个TCP连接并行发送多个请求和响应
二进制传输(Binary framing)无,使用文本格式传输是,使用二进制格式传输,减少了解析开销
头部压缩(Header compression)不支持,每次请求都携带完整的头部信息支持,使用HPACK算法对头部进行压缩,减少了带宽占用
服务器推送(Server push)不支持,客户端需要主动请求资源支持,服务器可以主动推送相关资源给客户端
流优先级(Stream prioritization)不支持,所有请求并发处理支持,可以指定请求的优先级,优化资源加载顺序
连接复用(Connection reuse)有,但受限于并发请求数更好的连接复用,减少了连接建立的开销
简化的握手过程支持,减少了握手时间和延迟
兼容性兼容HTTP/1,可以平滑升级兼容HTTP/1,可以平滑升级

相关文章:

如何系列 如何在Windows和Linux安装Nginx

文章目录 Windows一 下载Nginx二 启动Nginx三 验证 Linux一 安装依赖项二 下载Nginx源码包三 安装四 验证五 常用命令附录 Nginx是一款高性能的开源Web服务器和反向代理服务器,被广泛用于构建现代化的Web应用和提供静态内容。本篇博文将教你如何在Windows和Linux操作…...

“1+X+N”模式助力企业数字化转型

近期,中电金信顺利完成某股份制银行“基于战略解析与业务架构的全行科技规划项目”交付。针对客户的实际业务需求,中电金信采用“1XN”服务模式,服务客户全面的企业架构转型规划。项目组联合行方协同创新,首次将企架建模方法应用于…...

JavaEE(系列3) -- 多线程(线程的中断与线程等待)

新内容开始之前,我们总结一个知识点. Thread类中的start方法和run方法的区别? start(): 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程&#…...

想装一台自己的电脑,可以先了解下这些问题

时间:2023年5月11日19:09:56 ✨✨✨问题清单: ↪️计算机中CPU和内存是什么?分别有什么作用? ↪️为什么计算机中要有内存?CPU访问内存中的数据和访问硬盘中的数据有什么差别? ↪️CPU的基准速度表示什…...

Redis未授权漏洞复现

Redis简介 Redis是C语言开发的一个开源高性能(key-value)键值对类型的内存NoSQL数据库,可以用作数据库、缓存、信息中间件(性能非常优秀,支持持久化到硬盘且高可用)。由于其自身特点,可以广泛应用在数据集群&#xff…...

跳槽,如果没有更好的选择,可以去美团试试···

在美团干了半年,说一下自己的感受,美团是一家福利中等,工资待遇中上,高层管理团队强大,加班强度一般,技术不错,办公环境一般,工作氛围中上,部门差距之间工作体验差距巨大…...

Java10

Java10 (一)、配置文件(二)、多线程2.1 并发和并行2.2 多线程的实现方式2.3 常见成员方法2.3.1 线程的优先级2.3.2 守护线程(备胎线程)2.3.3 礼让线程和插入线程 2.4 线程生命周期2.5 线程安全问题2.6 锁2.…...

IMS call通话类型对比差异

IMS call呼入/呼出流程对比 呼出MO call大致流程 1)UE发送INVITE消息发起IMS call 2)UE接收网络返回的100 Trying 3)UE接收183 Session Progress 4)UE发送PRACK确认收到183 5)UE接收200 OK(PRACK) 6)UE发送UPDATE进行precondition流程 7)UE接收200 OK(UPDATE) 8…...

5.2 中心极限定理

学习目标: 要学习中心极限定理,我会采取以下几个步骤: 学习基本概念:了解什么是随机变量、样本、总体、概率密度函数等基本概念,为学习中心极限定理打下基础;学习正态分布:中心极限定理的核心…...

JVM 内存分哪几个区,如和判断一个对象是否存活

JVM 内存分哪几个区,每个区的作用是什么? java 虚拟机主要分为以下一个区:方法区: 1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生 GC,在这里进行的 GC 主要是对方法区里的常量池和对类型…...

在Spring Boot微服务使用Jedis操作Redis List列表

记录:408 场景:在Spring Boot微服务使用Jedis操作Redis List列表。 版本:JDK 1.8,Spring Boot 2.6.3,redis-6.2.5,jedis-3.7.1。 1.微服务中配置Redis信息 1.1在application.yml中Jedis配置信息 hub:example:redis:jedis:host: 192.168.…...

springboot + vue 部署 阿里云云服务器 ECS

安装所需文件 安装mysql5.7 下载MySQL的yum源配置 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm安装MySQL的yum源 yum -y install mysql57-community-release-el7-11.noarch.rpm使用yum方式安装MySQL5.7(下载需要点时间&#xf…...

mysql 日期 计算 时间差 天数差

mysql计算两个日期的时间差 第一种:TIMESTAMPDIFF函数 三个参数。第一个参数是比较的类型:FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER、YEAR几种类型。第二、三参数是时间,后减前: SELECT TIMESTAMPDIFF(DAY,20…...

不用网闸、FTP的话 如何实现内外网数据交换?

网络隔离已然成为很多企业首选的数据保护方式,即使是内部人员之间,也是不能随意的发送敏感文件的。但是,文件的流转交互,又是不可避免的,网络隔离保障了企业网络安全,但在具体实践中仍需解决各隔离网间的数…...

探寻Spring MVC的奥秘:内部组件与工作流程详解

Spring MVC是一个基于MVC架构模式的Web框架,是Spring框架的一个组件。它提供了一套Web应用程序开发的全面解决方案,包括从请求到响应的处理流程、处理请求的控制器、视图解析器、国际化和验证器等。 在这篇文章中,我们将介绍Spring MVC框架的…...

eclipse svn ClassNotFoundException: javassist.ClassPool

eclipse 五月 10, 2023 9:26:49 上午 org.apache.catalina.core.StandardContext filterStart 严重: Exception starting filter struts2 java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inject.ContainerImpl M e t h o d I n j e c t o r F…...

广度优先遍历搜索迷宫最短路径

思路分析 由于广度是扩散逐层的方式遍历,相当于是多条路同时跑,最后先到终点就是最短路径了。 广度优先搜索主要使用队列来进行处理 路径用一个单独的vector存储,每一个点的坐标由二维转为一维,如(2, 3)存储在vector中下标为2*…...

分布式计算基础知识

分布式系统的概念 分布式系统是由多个独立计算机组成的系统,这些计算机通过网络进行通信和协作,共同完成一个任务。分布式系统的特点是具有高可用性、可扩展性和容错性。 在分布式系统中,每个计算机节点都可以独立地执行任务,同…...

Mybatis方式完成CRUD操作

Mybatis方式完成CRUD操作 文章目录 Mybatis方式完成CRUD操作1、java以Mybatis方式操作DB1.1、配置数据源-创建 resources/mybatis-config.xml1.2、创建java bean-Monster1.3、配置Mapper接口声明方法1.4、配置xxMapper,完成SQL配置,实现CRUD操作1.5、Test测试 2、需…...

css背景 background的属性作用和值

当我们在 HTML 中设置背景时,可以使用 background 属性。这个属性有多个值,可以使用不同的值来设置背景图片、背景颜色、背景位置、背景重复等等。以下是用表格列出的常见的 background 属性的值及其作用: 属性值描述background-color设置背…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...