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