共计 2932 个字符,预计需要花费 8 分钟才能阅读完成。
Nginx简介及环境搭建
Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
应用场景
一、HTTP服务器
Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。
二、FTP服务器
FTP服务器,通常会提供一个上传的功能,其它应用如果需要静态资源就从该静态服务器中获取。
三、反向代理
反向代理(Reverse Proxy)是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
四、负载均衡
负载均衡也是Nginx常用的一个功能,负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
优点
- 支持高并发:单机能够支持10W+的并发连接,这个数量取决于内存大小,极限情况下,最高可达百万级。
- 内存消耗低:在同类型Web服务器中,Nginx比Apache占用的内存资源更少,一般情况下10K非活跃的Http Keep-Alive连接在Nginx中仅消耗2.5M内存。
- 高扩展性:低耦合的模块设计,有丰富的第三方模块支持。
- 高可靠性:Nginx的架构是由Master进程和Worker进程组成的,如果Worker进程出现问题,那么Master进程可以快速开启一个新的Worker进程提供服务。
根据netcraft统计,截至2023年5月,Nginx是目前市场占有率最高的Web服务器。
Nginx安装
大部分项目是部署在Linux服务器上的,这里以Ubuntu 23.04 x64系统、root权限为例进行演示。
root@vultr:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 23.04"
NAME="Ubuntu"
VERSION_ID="23.04"
VERSION="23.04 (Lunar Lobster)"
VERSION_CODENAME=lunar
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=lunar
LOGO=ubuntu-logo
在Ubuntu中,我们使用apt包管理器安装Nginx,在安装之前,我们通过如下指令更新包管理器中已安装的软件:
apt update
更新完成后,再通过下述指令安装Nginx
apt install nginx -y
待安装完成后,可以通过如下指令启查看是否安装完成:
curl localhost
获取到的内容为:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
若内容如上,则说明Nginx启动完成(默认页面可能会因为操作系统的不同而有所不同)。Nginx安装完成后,我们就可以直接访问本地主机localhost
或IP访问默认页面。
注意:远程访问需要配置防火墙规则,否则无法访问。防火墙至少开启两个地方:一个是云服务器提供商的控制台开启,另外一个是服务器上使用防火墙管理工具(
iptables
、ufw
或firewalld
[红帽系列])开启。以iptables和firewalld为例,开放80端口代码如下:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
firewall-cmd --zone=public --add-port=80/tcp
当相关防火墙配置成功后,就可以远程访问部署了Nginx服务器的主机了。
Nginx启动完成后,可以通过下述指令查看Nginx服务器的状态,可以看到有一个Master进程和一个Worker进程,这个Worker进程的数量,也就是Nginx服务器的核心数可以在Nginx服务器配置文件中进行配置。
systemctl status nginx
在Nginx安装完毕并允许后,就可以使用Nginx了。Nginx的使用较为简单,常用的命令如下:
nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen 重新打开日志文件。
nginx -c filename 为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t 不运行,仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx -v 显示 nginx 的版本。
nginx -V 显示 nginx 的版本,编译器版本和配置参数。
使用Nginx的重点是在它的配置文件那块,包括我们通过Ip地址访问的内容、反向代理、负载均衡等Nginx的应用场景,都是通过配置文件进行配置的。
Nginx的配置文件非常重要,我们自己写的配置文件通常需要放在/etc/nginx/conf.d/
下,在该目录中的所有*.conf
是属于Nginx额外的配置文件,这些配置文件都会被nginx.conf
这个主要的配置文件所引用。因此,我们可以在/etc/nginx/conf.d/
下写多个配置文件来配置Nginx,让Nginx解决各类的需求。