linux---Nginx详细教程(包含安装,网站部署)

Nginx是一个高性能的HTTP和反向代理服务器,也可以用作邮件代理服务器,其以占有内存少、并发能力强、稳定性高、丰富的功能集、低系统资源消耗而闻名。以下是对Nginx的详细教程:

一、Nginx简介

Nginx由俄罗斯人开发,第一个公开版本0.1.0发布于2004年10月4日。其源代码以类BSD许可证的形式发布,特点是占有内存少、并发能力强,官方的并发量最高可达5w/s,在整个web应用程序的生产环境使用率中名列前茅。

二、Nginx的功能

  1. 负载均衡:Nginx支持多种负载均衡算法,如轮询、最少连接、IP哈希等,可以灵活地分配流量至多个后端服务器,提高网站访问速度和稳定性。
  2. 反向代理:Nginx中的反向代理是一个非常常见的功能,它可以作为客户端和后端服务器之间的中介,将客户端请求转发到一个或多个后端服务器上,隐藏后端服务器的真实IP,提高网站安全性。
  3. Web服务器:Nginx可以高效处理静态资源,如HTML、CSS、JS、图片等,适合作为Web服务器。
  4. 动静分离:动静分离的基本思想是将静态资源请求(如图片、CSS、JS等)直接由Nginx处理,而将动态请求(如API调用、表单提交等)转发给后端服务器处理。通过Nginx的动静分离,可以减轻后端服务器的压力,并更好地利用缓存,提高静态资源的加载效率。

三、Nginx的安装与配置

使用YUM包管理器安装Nginx:

yum install -y nginx

使用APT包管理器安装Nginx:

apt install -y nginx

源码编译安装Nginx:

  1. 安装编译工具及库文件
    • 安装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来查看是否安装成功。
  2. Nginx的源码安装
    • 进入Nginx官网查找需要下载版本的链接地址,然后使用wget命令进行下载。
    • 解压缩下载的安装包。
    • 进入安装包目录,执行./configure命令进行配置,指定Nginx的安装路径、模块等。
    • 执行make命令进行编译。
    • 执行make install命令进行安装。
    • 运行Nginx,可以通过命令./nginx启动Nginx服务。
  3. Nginx的配置文件
    • Nginx的配置文件通常位于/etc/nginx/nginx.conf,也可以通过Nginx安装时的--conf-path参数指定。
    • 配置文件由多层块组成,包括主配置块、HTTP块、Server块和Location块。
    • 在配置文件中,可以设置Nginx的全局参数、HTTP相关的参数、虚拟主机的参数以及URL路径的具体行为等。
  4. 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

更详细源码编译教程可以参考linux—Nginx源码安装

四、Nginx的应用场景

  1. 静态资源服务器:Nginx可以作为静态资源服务器,用于加速图片、CSS、JS等文件的上传和下载。
  2. 负载均衡:Nginx可实现负载均衡,将请求分发到多台后端服务器,提高网站访问速度和稳定性。
  3. 反向代理:Nginx可作为反向代理服务器,隐藏后端服务器的真实IP地址,提高网站的安全性。
  4. 缓存加速:Nginx可通过缓存静态资源,减少后端服务器的压力,提高网站访问速度。

五、Nginx的优缺点

  1. 优点
    • 轻量级,相对Apache占用更少的资源。
    • 因为Nginx是非阻塞异步网络IO模型(epoll),高并发下能保持低资源低消耗,因此更适合做高并发(Apache采用的是select模型/线型轮询)。
    • 处理静态网页上表现的更好(简单、占资源少)。
    • 反向代理、负载均衡性能更强。
    • 可对后端服务器进行健康状态检查。
    • 支持网站缓存(加速网页访问)。
  2. 缺点
    • 在处理动态请求时,性能可能不如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.comserver_name xxxx.com;# 重定向所有HTTP请求到HTTPSreturn 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.3ssl_ciphers HIGH:!aNULL:!MD5; # 使用高强度的加密算法ssl_prefer_server_ciphers on; # 优先使用服务器端的加密算法配置# HSTS(HTTP Strict Transport Security)配置,强制浏览器使用HTTPSadd_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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/65943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RNN之:LSTM 长短期记忆模型-结构-理论详解-及实战(Matlab向)

0.前言 递归!循环神经网络Recurrent Neural Network 循环神经网络(又称递归神经网络,Recurrent Neural Network,RNN)。是一种用于处理序列数据的神经网络结构,具有记忆功能,能够捕捉序列中的时…

泛目录和泛站有什么差别

啥是 SEO 泛目录? 咱先来说说 SEO 泛目录是啥。想象一下,你有一个巨大的图书馆,里面的书架上摆满了各种各样的书,每一本书都代表着一个网页。而 SEO 泛目录呢,就像是一个超级图书管理员,它的任务就是把这些…

初识@ffmpeg/ffmpeg库

前言 FFmpeg是一套可以用来记录、转换数字音频、视频,并且能够利用它们来创建一个新的流媒体格式的自由软件项目,它被广泛应用在视频处理、音频处理以及直播领域。其中,@ffmpeg/ffmpeg 是一个将 FFmpeg 编译为 WebAssembly(WASM)的库,可支持几乎所有的音视频格式。 安装…

【图像去噪】论文复现:反向扩散中加入MAP将扩散模型从高斯去噪推广到真实去噪!DiffusionVI的Pytorch源码复现,跑通源码,梳理理论,单卡可执行!

请先看【专栏介绍文章】:【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中) 完整代码和训练好的模型权重文件下载链接见本文底…

Windows 蓝牙驱动开发-简介

蓝牙(英语:Bluetooth)是一种无线通信技术标准,用来让固定与移动设备,在短距离间交换资料,以形成个人局域网(PAN)。其使用短波特高频(UHF)无线电波,经由2.4至2.485 GHz的ISM频段来进行通信。1994年由电信商爱立信(Erics…

【Vue】全局/局部组件使用流程(Vue2为例)

全局组件和局部组件区别 如何使用 全局组件:全局注册后,可以在任意页面中直接使用。局部组件:在页面中需要先导入子组件路径,注册组件才能使用。 适用场景 全局组件:适用于高频使用的组件,如导航栏、业…

【Pytorch实用教程】PyTorch 中如何输出模型参数:全面指南

文章目录 PyTorch 中如何输出模型参数:全面指南1. 为什么需要输出模型参数?2. PyTorch 中输出模型参数的方法2.1 使用 `model.parameters()` 输出所有参数2.2 使用 `model.named_parameters()` 输出参数名称和值2.3 使用 `model.state_dict()` 输出模型的参数字典2.4 输出特定…

vscode vue 自动格式化

vscode vue 自动格式化 安装Prettier和Vetur插件 选择设置,并且转到编辑文件。增加如下内容。 {"editor.formatOnSave": true,"editor.defaultFormatter": "esbenp.prettier-vscode","[vue]": {"editor.defaultFor…

1、docker概念和基本使用命令

docker概念 微服务:不再是以完整的物理机为基础的服务软件,而是借助于宿主机的性能。以小量的形式,单独部署的应用。 docker:是一个开源的应用容器引擎,基于go语言开发的,使用时apache2.0的协议。docker是…

Genymotion配套VirtualBox所在地址

在 Genymotion打开虚拟机前需要先打开VirtualBox中的虚拟机 C:\Program Files\Oracle\VirtualBox\VirtualBox.exe 再开启genymotion中的虚拟机开关

【Linux】深刻理解软硬链接

一.软硬链接操作 1.软连接 touch 创建一个文件file.txt ,对该文件创建对应的软链接改怎么做呢? ln -s file.txt file-soft.link .给对应文件创建软连接。 软连接本质就是一个独立的文件,因为我们对应的软连接有独立的inode,他…

linux下MySQL的数据存放

在 Linux 下安装的 MySQL,数据表的数据默认存放在 My晓SQL 数据库的**数据目录**(Data Directory)中。具体来说,MySQL 会将所有数据库的数据存储在一个由 MySQL 配置文件中指定的目录里。该目录包含了所有数据库的表、索引、日志等…

第三十六章 Spring之假如让你来写MVC——拦截器篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

快速上手 HarmonyOS 应用开发

一、DevEco Studio 安装与配置 1. DevEco Studio 简介 DevEco Studio 是 HarmonyOS 的一站式集成开发环境(IDE),提供了丰富的工具和功能,支持 HarmonyOS 应用开发的全流程。 2. DevEco Studio 下载与安装 下载地址&#xff1a…

Java Web开发进阶——错误处理与日志管理

错误处理和日志管理是任何生产环境中不可或缺的一部分。在 Spring Boot 中,合理的错误处理机制不仅能够提升用户体验,还能帮助开发者快速定位问题;而有效的日志管理能够帮助团队监控应用运行状态,及时发现和解决问题。 1. 常见错误…

图解Git——分支的新建与合并《Pro Git》

⭐分支的新建与合并 先引入一个实际开发的工作流: 开发某个网站。为实现某个新的需求,创建一个分支。在这个分支上开展工作。 正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。你将按照如下方式来处理: 切换到你…

C#使用实体类Entity Framework Core操作mysql入门:从数据库反向生成模型2 处理连接字符串

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

【数据可视化-12】数据分析岗位招聘分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

LeetCode 977 题:有序数组的平方

LeetCode 977 题&#xff1a;有序数组的平方 (Squares of a Sorted Array) LeetCode 第977题要求给定一个按非降序排列的整数数组 nums&#xff0c;返回每个数字的平方并按升序排列。 题目描述 给定一个整数数组 nums&#xff0c;它按非降序排列&#xff08;即 nums[i] < …

excel仅复制可见单元格,仅复制筛选后内容

背景 我们经常需要将内容分给不同的人&#xff0c;做完后需要合并 遇到情况如下 那是因为直接选择了整列&#xff0c;当然不可以了。 下面提供几种方法&#xff0c;应该都可以 直接选中要复制区域然后复制&#xff0c;不要选中最上面的列alt;选中可见单元格正常复制&#xff…