一、概述
Nginx(发音为“engine X”)是一款高性能的开源HTTP服务器和反向代理服务器,同时也支持IMAP/POP3代理服务器。它由俄罗斯程序员伊戈尔·西索夫(Igor Sysoev)开发,并于2004年首次发布。Nginx以其高并发处理能力、低资源消耗和高性能而闻名,广泛应用于互联网行业,是许多大型网站和高性能需求场景的首选解决方案。
二、Nginx的特点
(1)高性能:Nginx采用事件驱动的异步非阻塞架构,能够高效处理大量并发连接。与传统的Apache服务器相比,Nginx在处理高并发请求时资源消耗更低,性能更优。
(2) 高可用性:支持热部署和热升级,可以在不中断服务的情况下更新配置文件或升级软件版本。
(3)模块化设计:通过加载不同的模块来扩展功能,如支持PHP、Python、Ruby等语言的处理模块,以及负载均衡、缓存等功能模块。
(4) 轻量级:Nginx的资源占用非常低,即使在高负载情况下也能保持较低的CPU和内存占用。
(5) 强大的反向代理功能:可以作为反向代理服务器,将客户端请求转发到后端服务器,并将后端服务器的响应返回给客户端。同时支持负载均衡、缓存和SSL加密等功能。
三、Nginx的主要功能
(1)Web服务器
• 提供静态内容(如HTML、CSS、JavaScript、图片等)的高效访问。
• 支持动态内容处理,通过与后端语言(如PHP、Python、Ruby等)结合,使用FastCGI、uWSGI等协议进行通信。
(2)反向代理服务器
• 将客户端请求转发到后端服务器,隐藏后端服务器的细节,增强安全性。
• 支持负载均衡,可以将请求分发到多个后端服务器,提高系统的可用性和扩展性。
• 提供缓存功能,可以缓存后端服务器的响应,减少对后端服务器的压力,提高响应速度。
(3)负载均衡
• 支持多种负载均衡算法,如轮询、加权轮询、url哈西、最少连接数、IP哈希。
• 可以对后端服务器进行健康检查,自动移除故障服务器,确保服务的高可用性。
(4)缓存
• 提供页面缓存功能,可以缓存后端服务器的响应,减少对后端服务器的请求次数。
• 支持缓存失效策略,可以根据HTTP头信息或自定义规则进行缓存失效。
(5)SSL/TLS支持
• 提供SSL/TLS加密功能,可以保护客户端与服务器之间的通信安全。
• 支持OCSP Stapling、TLS 1.3等高级安全特性。
四、部署Nginx服务
4.1、配置Nginx下载仓库
vim /etc/yum.repos.d/nginx.repo
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
4.2、安装nginx
yum -y install nginx
4.3、检查nginx版本
nginx -v
4.4、启动nginx并加入开机自启动
systemctl start nginx
systemctl enable nginx
4.5、检查端口看nginx是否开启
netstat -lntup | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1166/nginx: master
4.6、nginx配置文件
cat /etc/nginx/nginx.conf
# 核心区块
user nginx; # 运行nginx的用户 安装nginx自动创建此用户
worker_processes auto; # nginx启动进程数量 以核心为准error_log /var/log/nginx/error.log notice; # 错误日志的位置
pid /var/run/nginx.pid; # nginx的pid号写入到此文件中
#事件模块
events {
worker_connections 1024; # 每个进程最大的连接数
}
# http区块 接收浏览器请求 并且响应浏览器请求
http {
include /etc/nginx/mime.types; # 网站支持的文件类型
default_type application/octet-stream; # 如果网站不支持的类型变为下载到本地log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; # 日志格式access_log /var/log/nginx/access.log main; # 访问日志的位置
sendfile on; # 文件传输
#tcp_nopush on;keepalive_timeout 65; # 长连接 65秒自动和浏览器断开
#gzip on; # 是否资源压缩
include /etc/nginx/conf.d/*.conf; # 将conf.d下的*.conf引入到当前的文件
}
server区块,网站的配置。server区块是包含在http区块中
cd /etc/nginx/conf.d
vim game.conf
server {
listen 80; #监听的端口
server_name ip/端口/ip:端口; #自己购买的域名
location / { #路径匹配
root /game; #获取信息的位置
index index.html; #默认给浏览器返回的文件
}
}
检查nginx配置文件 nginx -t
五、部署Nginx业务
5.1、多IP部署
5.1.1、部署网站业务
服务器:web01 ip:10.0.0.7
网站:小霸王游戏、医疗网站
5.1.2、编辑配置文件
vim /etc/nginx/conf.d/ip.conf
server {
listen 10.0.0.7:80;
server_name _;
location / {
root /app/xiaobawang;
index index.html;
}
}
server {
listen 10.0.0.8:80;
server_name _;
location / {
root /app/yiliao;
index index.html;
}
}
5.1.3、检查配置文件语法是否有错误
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5.1.4、创建代码目录
mkdir -p /app/xiaobawang
mkdir -p /app/yiliao
5.1.5、将小霸王代码拷贝到代码文件夹中并解压
rz /root/type-game.zip
mv /root/type-game.zip /app/xiaobawang
cd /app/xiaobawang
unzip type-game.zip
5.1.6、将医疗代码拷贝到代码文件夹中并解压
rz /root/yiliao.tar.gz
mv /root/yiliao.tar.gz /app/yiliao
cd /app/yiliao
tar xf yiliao.tar.gz
5.1.7、重启nginx服务
systemctl restart nginx
5.1.8、增加IP
ip add add 10.0.0.8 dev ens33
5.1.9、通过浏览器访问IP
5.2、多端口部署
5.2.1、部署网站业务
服务器:web01 ip:10.0.0.7
网站:小霸王游戏 10.0.0.7:80
医疗网站 10.0.0.7:81
5.2.2、编辑配置文件
vim /etc/nginx/conf.d/port.conf
server {
listen 80;
server_name _;
location / {
root /app/xiaobawang;
index index.html;
}
}
server {
listen 81;
server_name _;
location / {
root /app/yiliao;
index index.html;
}
}
5.2.3、检查配置文件语法是否正确
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5.2.4、创建代码目录
mkdir -p /app/xiaobawang
mkdir -p /app/yiliao
5.2.5、将小霸王的代码拷贝到对应代码目录并解压
rz /root/type-game.zip
mv /root/type-game.zip /app/xiaobawang
cd /app/xiaobawang
unzip type-game.zip
5.2.6、将医疗的代码拷贝到对应代码目录并解压
rz /root/yiliao.tar.gz
mv /root/yiliao.tar.gz /app/yiliao
cd /app/yiliao
tar xf yiliao.tar.gz
5.2.7、重启nginx服务
systemctl restart nginx
5.2.8、浏览器访问
5.3、多域名部署
5.3.1、部署网站业务
服务器:web01 ip:10.0.0.7
网站:小霸王游戏 www.game.com
医疗网站 www.yiliao.com
5.3.2、编辑配置文件
vim /etc/nginx/conf.d/yuming.conf
server {
listen 80;
server_name www.game.com;
location / {
root /app/xiaobawang;
index index.html
}
}
server {
listen 80;
server_name www.yiliao.com;
location / {
root /app/yiliao;
index index.html;
}
}
5.3.3、检查配置文件语法是否正确
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5.2.4、创建代码目录
mkdir -p /app/xiaobawang
mkdir -p /app/yiliao
5.2.5、将小霸王的代码拷贝到对应代码目录并解压
rz /root/type-game.zip
mv /root/type-game.zip /app/xiaobawang
cd /app/xiaobawang
unzip type-game.zip
5.2.6、将医疗的代码拷贝到对应代码目录并解压
rz /root/yiliao.tar.gz
mv /root/yiliao.tar.gz /app/yiliao
cd /app/yiliao
tar xf yiliao.tar.gz
5.2.7、重启nginx服务
systemctl restart nginx
5.2.8、将对应域名解析到本地hosts
10.0.0.7 www.game.com www.yiliao.com
5.2.9、通过浏览器访问
六、小结
Nginx是一款功能强大、性能卓越的开源服务器软件,适用于各种规模的网站和应用。通过合理配置和优化,Nginx可以为企业提供高效、稳定、安全的Web服务。