精品软件与实用教程
在Windows下如何安装nginx
很多熟悉Linux的人都使用过nginx,nginx作为web的服务器端,占用资源少,功能强大,这个小巧且功能强大的nginx,正在慢慢地在吞食同为web服务端的Apache和IIS的份额。那究竟nginx到底有什么强大的功能呢?除了web服务端的功能外,可能很多人未必了解nginx的真正强大的功能。
nginx,Apache,iis统称为web服务端三剑客。
nginx [engine x] 是 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器,最初由Igor Sysoev编写。很长一段时间以来,它一直在许多负载重的俄罗斯网站上运行,包括 Yandex、 Mail.Ru、 VK和 Rambler。根据 Netcraft 的数据, 2022 年 4 月,nginx 服务或代理了 21.79% 最繁忙的站点。以下是一些成功案例: Dropbox、 Netflix、 WordPress.com、 FastMail.FM。
用于 Windows 的 nginx 版本使用本机 Win32 API(不是 Cygwin 仿真层)。目前只使用select()和poll()(1.15.9)连接处理方法,所以不应该期望高性能和可扩展性。由于这个和其他一些已知问题,Windows 的 nginx 版本被认为是beta版本。目前,它提供了与 UNIX 版本的 nginx 几乎相同的功能,除了 XSLT 过滤器、图像过滤器、GeoIP 模块和嵌入式 Perl 语言。
什么是反向代理?
nginx不仅仅可以提供web服务端的基本功能,同时出色的反向代理功能也是非常强大的,反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
下载nginx
首先访问nginx的官方网站,在官方网站中提供Windows版本的nginx服务器端软件。
访问ngixn官方网站:https://nginx.org/
截止2022年,最新版本是nginx-1.21.6,点击右侧下载,在下载页面中下载Windows版本的nginx。
你可以选择主线版本下载,也可以下载稳定版本。
点击下载:nginx/Windows-1.21.6 | nginx/Windows-1.20.2
安装nginx
下载完毕后,双击nginx.exe文件,运行nginx。
直接双击nginx.exe后,一个黑色的弹窗一闪而过,nginx已经启动成功了。
或者打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车即可打开nginx。
如何检查nginx是否启动成功呢?在浏览器中 输入 http://localhost
如果可以看到nginx的欢迎页面,那么恭喜你,已经启动成功了。
配置nginx
nginx已经安装成功了,下面需要配置一下nginx,和Linux一样,在Windows中的nginx也需要修改nginx的配置文件来配置nginx。
点击打开 CONF 文件夹,在文件夹内使用记事本方式编辑 nginx.conf 文件
http{
server{
listen 80; #监听端口,基于IP配置的时候变更此处,比如192.168.1.100:8080;
server_name boxpu.com;
#主机域名,实际项目发布的话,填公网上的域名,本地部署的话,可以在C:\Windows\System32\drivers\etc\hosts文件中添加IP和域名的映射
#映射解析,/代表根路径,此处解析还有正则表达式的解析方式。
location / {
root E:/uzbox; #网站所在路径
index index.html index.htm; #首页文件
}
}
}
网站所在目录在设置的时候,要使用/,不要使用\。
http{}中一些常用配置
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型
sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来 输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置 为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常 把这个改成off。
autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout 120; #长连接超时时间,单位是秒
gzip on; #开启gzip压缩输出
nginx.conf文件配置完毕后,使用下面命令检测一下配置文件是否正确。
nginx -t
输入命令后,配置正确会返回syntax is ok,如果错误的话,会返回错误的行。
如果使用默认端口80,首先检查conf目录下的nginx.conf配置文件中,端口设置是否为80,确认完毕后使用下面命令检查80端口是否可用。
netstat -ano | findstr 0.0.0.0:80
或者使用下面的端口检测命令:
netstat -ano | findstr "80"
修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行下面的命令,即可让改动生效。
nginx -s reload
如果你想关闭关闭nginx
在CMD窗口中输入nginx命令
nginx -s stop
或者
nginx -s quit
nginx配置反向代理
在nginx.conf配置文件中添加tomcat_server块,在tomcat_server块中填入需要代理的网站域名。
#upstream tomcat_server块反向代理设置。
upstream tomcat_server{
server t1.boxpu.com;
}
如果需要在反向代理中配置负载均衡,可以配置多个反向代理网站。
#负载均衡网站配置核心块
upstream tomcat_server{
server t1.boxpu.com weight=1;
server t2.boxpu.com weight=2;
}
weight属性,此属性表示各服务器被访问到的权重,weight越高被访问到的几率越高。例如weight=2,nginx有优先访问t2.boxpu.com,当t2.boxpu.com访问用户过多时,会自动切换到t1.boxpu.com。
上面设置完毕tomcat_server块后,在server块中设置反向代理。
配置完毕后使用 nginx -t 检查一下语法是否正确,最后重新启动nginx
server {
location / {
proxy_pass http://tomcat_server;
#在根目录下,使用proxy_pass调用tomcat_server块。
}
}
nginx -s reload
结语
在Windows下安装nginx已经成功了,Windows下的配置方式和Linux下大同小异,没有什么区别,唯一的问题是root web存放目录上的区别。在目录的调用上,要使用/,不要使用\。
nginx -s stop 快速关机
nginx -s quit 优雅关机
nginx -s reload 更改配置,使用新配置启动新工作进程,优雅关闭旧工作进程
nginx -s reopen 重新打开日志文件
已知的问题
尽管可以启动几个工人,但实际上只有一个工人在做任何工作。
不支持 UDP 代理功能。
未来可能的增强功能
作为服务运行。
使用 I/O 完成端口作为连接处理方法。
在单个工作进程中使用多个工作线程。