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

news2024/11/29 11:33:59

文章目录

    • 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 requests
 12 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,可以平滑升级

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

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

相关文章

Vue 前端代码多地部署(打包后配置动态IP)

Vue 前端代码多地部署(打包后配置动态IP) 需求一、使用 config.json二、使用 config.js 需求 vue 代码打包之后,需要在多个地方部署。正常操作是:先改 ip 地址,再打包。这样每换一个地方部署,就需要重新打…

将自己写的nginx.conf运行到阿里云linux服务器上

首先 你要保证自己的nginx.conf没有问题 可以先在本地运行一下 然后来到nginx.conf文件的所在目录 利用 scp -r ./nginx.conf 用户名(如果之前没设置过就是 root)服务器公网地址:/etc/nginx/将文件传到服务器上去 这里需要注意 如果你的服务器之前没有装过nginx 是没有这个目…

C语言实现随机点名器

目录 1、程序描述 2、程序功能 3、功能详细实现过程 学生结构体声明和定义 菜单(menu)函数 文件读取和保存函数 查询函数 点名函数 rand函数 点名函数实现 点名次数归零函数 字体颜色变化函数 4、运行效果 5、源码分享 1、程序描述 只使用…

ANR实战案例 2 - 不同线程状态ANR示例

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、Blocked状态示例1.启动初始化阻塞案例trace1.tx 2.ConcurrentHashMap分段锁优…

互联网营销之何谓真需求-想知道如何挖掘真需求看这篇就对了

互联网营销思维是以爆品为核心的迭代思维,本文结合“生日蛋糕”、“方便面”、“蜜雪冰城”几个小例子,以及我们具体的工作,展开聊聊什么是“真需求”。 1. 互联网营销和传统营销的区别 1.1 传统的营销思维: “定位4P&#xff0…

亚马逊云科技:使用Inf2实例运行大语言模型GPT-J-6B基础设施

在2019年的亚马逊云科技re:Invent上,亚马逊云科技发布了Inferentia芯片和Inf1实例这两个基础设施。Inferentia是一种高性能机器学习推理芯片,由亚马逊云科技定制设计,其目的是提供具有成本效益的大规模低延迟预测。时隔四年,2023年…

金融行业软件测试面试必备:答案详解与干货技巧

大家好,今天我要和大家分享的是我多年从事金融行业软件测试的心得体会。由于金融行业涉及到的数据量非常大,系统功能也十分复杂,因此在招聘软件测试人员时,往往会提出一些具有挑战性的问题。 作为一个资深面试官,我也…

Android aidl及binder基础知识巩固

作者:义华 1、什么是binder binder是android framework提供的,用于跨进程方法调用的机制,具有安全高效等特点。 我们知道,在 Android 系统中,每个应用程序都运行在一个独立的进程中,各个进程之间需要进行…

Logstash-grok表达式常用模式与正则使用与测试

Logstash 常用字符解释常用模式使用方式 使用正则表达式使用方式 测试用例 常用字符解释 \ 表示匹配 \s* 匹配空格(可多个) \w 匹配字符(可多个)常用模式 %{HOSTNAME},匹配请求的主机名 %{TIMESTAMP_ISO8601:time…

探索智能化:TOOM解析未来稿件校验系统的技术进展与应用展望

在信息时代,随着大数据、人工智能和自然语言处理等技术的快速发展,稿件校验系统正朝着智能化的方向迈进。智能化的稿件校验系统能够更准确、高效地检测虚假信息、抄袭行为以及提升文章质量。本文将探讨智能化稿件校验系统的技术进展与应用展望&#xff0…

NC与单一窗口数据对接丨外贸软件

在国际贸易通关过程中,所涉及相关部门的信息管理,主要是以数字化流程系统为主,让每个部门业务的申请、办理、回复采用电子化和互联网化。由于每个环节部分的数据壁垒未打通,数据无法协同共享,导致在口岸通关的过程中&a…

Swoole定时器实现毫秒级任务调度

简介 Timer 毫秒精度的定时器,底层基于 epoll_wait 和 setitimer 实现,数据结构使用最小堆,可支持添加大量定时器,使用最小堆数据结构实现的定时器,类似 JavaScript 的 setInterval,Swoole 定时器的添加和…

I2C通信协议原理和MPU6050

一、串口通讯 只能在两个设备之间进行 若要三台设备两两通信,则每个设备得需要两组窗口,为3组相互独立的窗口通讯 为解决这个问题:设计了总线通讯,有多种,I2C为其中一种 二、I2C通信 (1&#…

(java)异常 (详解)

目录 1. 异常的概念 1. 算术异常 2.空指针异常 3.数组越界异常 4.在编译时就发现了异常 2.异常的体系结构 总结: 3.异常的分类 4.异常的处理 1 .防御式编程 2.异常的抛出 3 .异常的捕获 3.1 .异常声明throws throw和throws的区别? …

【笔试强训选择题】Day13.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…

昨天的测试岗面试,仅仅4个问题,轻松让面试者破防了

目录 引言 你看,一不小心,就要被虐!! 自动化测试到底该如何学? 一、Python编程学习内容 二、WEB自动化测试学习内容 三、APP自动化测试学习内容 四、Postman接口测试工具学习内容 五、接口自动化测试学习内容 …

微服务框架【Nacos配置管理-Feign远程调用-Gateway服务网关】

一、Nacos配置管理 1.统一配置管理 在Nacos中添加配置信息 填写配置信息 点击发布 完成配置的统一管理 配置获取的步骤: 项目启动->读取本地配置文件application.yml->创建spring容器->加载bean 但是现在多了一个nacos中的配置文件,我们…

IntelliJ IDEA 统一设置编码为utf-8编码 及 SpringBoot 打 jar 包运行 在windows 平台控制台和日志 乱码解决

文章目录 一、背景二、知识准备三、程序运行源代码历经处理阶段四、问题描述五、解决方法1.修改项目编码格式统一为UTF-82.将项目中的.idea文件夹中的encodings.xml文件中的编码格式改为uft-83.File->Settings->Build,Execution,Deployment -> Compiler -> Java Co…

架构师日记-从数据库发展历程到数据结构设计探析 | 京东云技术团队

作者:京东零售 刘慧卿 一、数据库发展史 起初,数据的管理方式是文件系统,数据存储在文件中,数据管理和维护都由程序员完成。后来发展出树形结构和网状结构的数据库,但都存在着难以扩展和维护的问题。直到七十年代&am…

分布式补充知识 02.AOP的重要注解@annotation ,使用添加缓存和清空缓存

01.在项目中创建一个包annotation包: 在创建新的java.class文件时候,选择annotation 写一个自定义的注解,名字叫做RequiredCache package com.cy.annotation;package com.cy.annotation;import java.lang.annotation.ElementType; import j…