linux---Nginx详细教程(包含安装,网站部署)
Nginx是一个高性能的HTTP和反向代理服务器,也可以用作邮件代理服务器,其以占有内存少、并发能力强、稳定性高、丰富的功能集、低系统资源消耗而闻名。以下是对Nginx的详细教程:
一、Nginx简介
Nginx由俄罗斯人开发,第一个公开版本0.1.0发布于2004年10月4日。其源代码以类BSD许可证的形式发布,特点是占有内存少、并发能力强,官方的并发量最高可达5w/s,在整个web应用程序的生产环境使用率中名列前茅。
二、Nginx的功能
- 负载均衡:Nginx支持多种负载均衡算法,如轮询、最少连接、IP哈希等,可以灵活地分配流量至多个后端服务器,提高网站访问速度和稳定性。
- 反向代理:Nginx中的反向代理是一个非常常见的功能,它可以作为客户端和后端服务器之间的中介,将客户端请求转发到一个或多个后端服务器上,隐藏后端服务器的真实IP,提高网站安全性。
- Web服务器:Nginx可以高效处理静态资源,如HTML、CSS、JS、图片等,适合作为Web服务器。
- 动静分离:动静分离的基本思想是将静态资源请求(如图片、CSS、JS等)直接由Nginx处理,而将动态请求(如API调用、表单提交等)转发给后端服务器处理。通过Nginx的动静分离,可以减轻后端服务器的压力,并更好地利用缓存,提高静态资源的加载效率。
三、Nginx的安装与配置
使用YUM包管理器安装Nginx:
yum install -y nginx
使用APT包管理器安装Nginx:
apt install -y nginx
源码编译安装Nginx:
- 安装编译工具及库文件
- 安装GCC编译器:GCC是一个开源的编译器集合,用于处理各种各样的语言,其中就包含了C语言。使用命令
yum install -y gcc
来安装,安装成功后,可以通过gcc --version
来查看是否安装成功。 - 安装PCRE库:PCRE(Perl Compatible Regular Expression)兼容正则表达式库,Nginx的Rewrite模块和http核心模块都会使用到PCRE正则表达式语法。使用命令
yum install -y pcre pcre-devel
来进行安装,安装成功后,可以通过rpm -qa pcre pcre-devel
来查看是否安装成功。 - 安装zlib库:zlib库提供了开发人员的压缩算法,Nginx的各个模块中需要使用gzip压缩,所以也需要提前安装zlib库及源代码zlib和zlib-devel。使用命令
yum install -y zlib zlib-devel
来进行安装,安装成功后,可以通过rpm -qa zlib zlib-devel
来查看是否安装成功。 - 安装OpenSSL库:OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包进行安全通信,并且避免被窃听。在Nginx中,如果服务器需要提供安全网页时就需要用到OpenSSL库。使用命令
yum install -y openssl openssl-devel
来进行安装,安装成功后,可以通过rpm -qa openssl openssl-devel
来查看是否安装成功。
- 安装GCC编译器:GCC是一个开源的编译器集合,用于处理各种各样的语言,其中就包含了C语言。使用命令
- Nginx的源码安装
- 进入Nginx官网查找需要下载版本的链接地址,然后使用wget命令进行下载。
- 解压缩下载的安装包。
- 进入安装包目录,执行
./configure
命令进行配置,指定Nginx的安装路径、模块等。 - 执行
make
命令进行编译。 - 执行
make install
命令进行安装。 - 运行Nginx,可以通过命令
./nginx
启动Nginx服务。
- Nginx的配置文件
- Nginx的配置文件通常位于
/etc/nginx/nginx.conf
,也可以通过Nginx安装时的--conf-path
参数指定。 - 配置文件由多层块组成,包括主配置块、HTTP块、Server块和Location块。
- 在配置文件中,可以设置Nginx的全局参数、HTTP相关的参数、虚拟主机的参数以及URL路径的具体行为等。
- Nginx的配置文件通常位于
- Nginx的启动、停止、重启和状态查看
- 启动Nginx:使用命令
systemctl start nginx
或./nginx
(在Nginx的安装目录下)。 - 停止Nginx:使用命令
systemctl stop nginx
或./nginx -s quit
(在Nginx的安装目录下)。 - 重启Nginx:使用命令
systemctl restart nginx
或./nginx -s reload
(在Nginx的安装目录下,实现平滑重启)。 - 查看Nginx状态:使用命令
systemctl status nginx
。
- 启动Nginx:使用命令
更详细源码编译教程可以参考linux—Nginx源码安装
四、Nginx的应用场景
- 静态资源服务器:Nginx可以作为静态资源服务器,用于加速图片、CSS、JS等文件的上传和下载。
- 负载均衡:Nginx可实现负载均衡,将请求分发到多台后端服务器,提高网站访问速度和稳定性。
- 反向代理:Nginx可作为反向代理服务器,隐藏后端服务器的真实IP地址,提高网站的安全性。
- 缓存加速:Nginx可通过缓存静态资源,减少后端服务器的压力,提高网站访问速度。
五、Nginx的优缺点
- 优点
- 轻量级,相对Apache占用更少的资源。
- 因为Nginx是非阻塞异步网络IO模型(epoll),高并发下能保持低资源低消耗,因此更适合做高并发(Apache采用的是select模型/线型轮询)。
- 处理静态网页上表现的更好(简单、占资源少)。
- 反向代理、负载均衡性能更强。
- 可对后端服务器进行健康状态检查。
- 支持网站缓存(加速网页访问)。
- 缺点
- 在处理动态请求时,性能可能不如Apache(动态请求会用到伪静态,而Apache对rewrite支持的更好)。
- rewrite模块没有Apache完善。
六、搭配网站
1.在/etc/nginx/conf.d目录下创建配置文件
vim /etc/nginx/conf.d/nginx.conf
2.添加下面代码(根据自己需求修改)
# 定义一个server块,用于配置一个虚拟主机(HTTP)
server {
# 监听80端口,这是HTTP协议的默认端口
listen 80;
# 设置虚拟主机的域名,这里是xxxx.com
server_name xxxx.com;
# 重定向所有HTTP请求到HTTPS
return 301 https://$host$request_uri;
}
# 定义一个server块,用于配置一个虚拟主机(HTTPS)
server {
# 监听443端口,这是HTTPS协议的默认端口
listen 443 ssl;
# 设置虚拟主机的域名,与HTTP部分相同
server_name xxxx.com;
# 指定SSL证书和私钥文件的路径
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
# 可选的:指定SSL证书链(如果您的证书由中间CA签发)
# ssl_trusted_certificate /path/to/your/chain.crt;
# SSL会话参数配置
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off; # 对于旧版Nginx,可能需要设置为on以支持会话票据
# 现代加密套件和协议配置
ssl_protocols TLSv1.2 TLSv1.3; # 仅启用TLS 1.2和1.3
ssl_ciphers HIGH:!aNULL:!MD5; # 使用高强度的加密算法
ssl_prefer_server_ciphers on; # 优先使用服务器端的加密算法配置
# HSTS(HTTP Strict Transport Security)配置,强制浏览器使用HTTPS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
# 指定静态文件的根目录
root /home/www/dist;
# 配置请求的路由处理
location / {
index index.html;
try_files $uri $uri/ /index.html;
}
# 配置访问日志
access_log /var/log/nginx/xiao.com_access.log main;
# 配置错误日志
error_log /var/log/nginx/xiao.com_error.log error;
# 配置错误页面的处理
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
3.检查
nginx -t
4.重启服务
systemctl reload nginx.service