【Java 进阶篇】Nginx 使用详解:搭建高性能的 Web 服务器

在这里插入图片描述

在互联网的世界里,Web 服务器是我们访问网站、获取信息的入口。Nginx(发音"engine x")作为一款轻量级、高性能的 Web 服务器和反向代理服务器,因其出色的性能和可扩展性而备受推崇。本文将围绕 Nginx 的使用进行详解,让你轻松掌握如何搭建高性能的 Web 服务器。

什么是 Nginx?

Nginx 是一款开源的、高性能的 HTTP 服务器和反向代理服务器。由俄罗斯程序员 Igor Sysoev 开发,并于 2004 年首次发布。Nginx 的设计目标是提供高性能、高并发、低内存消耗的服务。它可以作为独立的 Web 服务器使用,也可以作为反向代理服务器配合其他后端服务器使用。

Nginx 的优势

1. 高性能

Nginx 以其出色的性能而著称。它采用异步事件驱动的架构,能够处理大量并发连接而不会导致资源耗尽。这使得 Nginx 在高并发环境下表现出色,适用于处理大量请求的场景。

2. 低内存消耗

相比于传统的 Web 服务器,Nginx 具有更低的内存消耗。这使得它在资源受限的环境中更为适用,可以运行在一些配置较低的服务器上。

3. 高度可扩展

Nginx 的模块化设计和可扩展性使得它可以灵活应对各种需求。你可以通过添加第三方模块或编写自定义模块,轻松地扩展 Nginx 的功能。

4. 负载均衡

作为反向代理服务器,Nginx 提供了负载均衡功能,可以将请求分发到多个后端服务器,从而提高整体系统的稳定性和性能。

5. 热部署

Nginx 具备热部署的能力,可以在不停机的情况下进行配置文件的重新加载,使得系统维护更加方便。

安装 Nginx

在开始使用 Nginx 之前,首先需要在服务器上进行安装。以下是在 Ubuntu 和 CentOS 系统上安装 Nginx 的步骤。

在 Ubuntu 上安装 Nginx

在 Ubuntu 上,可以使用以下命令安装 Nginx:

sudo apt update
sudo apt install nginx

安装完成后,你可以使用以下命令启动 Nginx 服务:

sudo systemctl start nginx

在 CentOS 上安装 Nginx

在 CentOS 上,可以使用以下命令安装 Nginx:

sudo yum install nginx

安装完成后,使用以下命令启动 Nginx 服务:

sudo systemctl start nginx

无论你选择哪个 Linux 发行版,安装完成后都可以使用以下命令检查 Nginx 是否成功运行:

sudo systemctl status nginx

如果看到输出中包含 “active (running)”,说明 Nginx 已成功启动。

基本配置

服务配置文件

Nginx 的主要配置文件是 /etc/nginx/nginx.conf,该文件包含了 Nginx 的全局配置信息。而每个虚拟主机(站点)的配置通常存储在 /etc/nginx/sites-available/ 目录下的单独文件中。

创建一个简单的虚拟主机

创建一个简单的虚拟主机配置文件,例如 /etc/nginx/sites-available/mywebsite

server {listen 80;server_name mywebsite.com www.mywebsite.com;location / {root /var/www/mywebsite;index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}
}

在这个简单的配置中:

  • listen 80; 指定监听的端口为 80,即 HTTP 的默认端口。
  • server_name 指令定义了该虚拟主机的域名,可以设置多个域名,用空格分隔。
  • location / 定义了对根路径 / 的请求应该如何处理。这里指定了网站文件的根目录和默认首页文件。

启用虚拟主机

为了启用这个虚拟主机,我们需要在 /etc/nginx/sites-enabled/ 目录中创建一个符号链接,指向 sites-available 目录中的配置文件。执行以下命令:

sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/

然后重新加载 Nginx 以应用配置更改:

sudo systemctl reload nginx

静态文件托管

上述虚拟主机配置中,我们指定了网站文件的根目录为 /var/www/mywebsite,并且默认首页文件为 index.html。你可以将你的静态网页文件放置在这个目录中,Nginx 将会为你提供访问这些文件的服务。

反向代理配置

Nginx 也可以用作反向代理,将请求转发到后端的应用服务器。以下是一个简单的反向代理配置示例:

server {listen 80;server_name api.mywebsite.com;location / {proxy_pass http://backend-server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

在这个配置中:

  • proxy_pass 指令定义了后端服务器的地址,可以是一个域名或者 IP 地址。
  • proxy_set_header 指令用于设置传递给后端服务器的 HTTP 头信息,包括 HostX-Real-IPX-Forwarded-For 等。

SSL/TLS 配置

为了加强网站的安全性,你可以配置 Nginx 支持 SSL/TLS,启用 HTTPS。以下是一个简单的 SSL 配置示例:

server {listen 443 ssl;server_name secure.mywebsite.com;ssl_certificate /etc/nginx/ssl/mywebsite.crt;ssl_certificate_key /etc/nginx/ssl/mywebsite.key;location / {root /var/www/secure;index index.html index.htm;}
}

在这个配置中:

  • listen 443 ssl; 指定了监听端口为 443,并启用了 SSL。
  • ssl_certificatessl_certificate_key 分别指定了 SSL 证书和私钥的路径。你需要提供有效的 SSL 证书和私钥文件。

负载均衡配置

Nginx 提供了负载均衡功能,可以将请求分发到多个后端服务器,提高系统的稳定性和性能。以下是一个简单的负载均衡配置示例:

upstream backend {server backend1.example.com;server backend2.example.com;server backend3.example.com;
}server {listen 80;server_name myloadbalancedwebsite.com;location / {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

在这个配置中:

  • upstream 块定义了一个名为 backend 的后端服务器组,包含了多个后端服务器的地址。
  • proxy_pass 将请求转发到后端服务器组 backend,实现了负载均衡。

总结

Nginx 是一款功能强大且灵活的 Web 服务器和反向代理服务器,适用于各种规模的项目。本文简要介绍了 Nginx 的安装、基本配置、静态文件托管、反向代理、SSL/TLS 配置以及负载均衡等方面的内容。希望通过这份详解,你能更加深入地理解和使用 Nginx,为你的 Web 服务器搭建提供一些建议和指导。

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

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

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

相关文章

新手小白如何搭建自己的服务器

由于近期六年前的域名到期了,阿里云的客服电话,正好提醒了我需要管理下这方面的东西, 正好看到阿里云的服务器99/年,而且可以原价续费两年,截止日期为2026年3月,所以我还是剁手了。 借着这次机会写一部分建…

Linux系统安装MySQL

Linux系统安装MySQL 第一步:下载YUM wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm第二步:安装MySQL的YUM 仓库 rpm -ivh mysql57-community-release-el7-11.noarch.rpm第三步:查看MySQL版本 yum repolist …

YOLOv8改进:IoU系列篇 | Shape-IoU结合基于辅助边框的Inner-IoU损失,实现再次创新

🚀🚀🚀本文改进: Shape-IoU结合基于辅助边框的Inner-IoU损失,小目标检测实现涨点,基于辅助边框的优化前提下,更加关注边界框本身的形状和尺度来计算损失 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研…

【Java】实验七

实验要求: 1、编写有复制文本文件功能的记事本程序,界面参考下图,窗口中放置文本区(JTextArea)组件: 当点击“复制文件”菜单项后,出现下面的文件对话框,选择要复制的文件。 点击“打开”按钮后,将选中的文件显示在记事本的文本区,并将该文件复制到同一目录下的“cop…

移动通信原理与关键技术学习(2)

1.多径信道滤波器表示,多径信道可以认为是线性时变滤波器,接收信号为发送信号与信道冲激响应的卷积。 2.调制就是对信号源的信息进行处理加到载波上,使其变为适合于信道传输的形式的过程,就是使载波随信号而改变的技术。 3.进行调…

SSH 密钥身份验证和管理

安全外壳协议(Security Shell Protocol)是一种应用于计算机网络的安全通信协议,其提供的服务可用于保护网络上的连接和数据传输安全性,其核心思想是为网络上的两台计算机之间搭建一个安全的外壳,以保护数据传输的安全性…

54、Softmax 分类器以及它的底层原理

下面开始介绍最后一个算法softmax。在前面介绍全连接算法或其他文章中,或多或少也提到了softmax。 在分类网络里,softmax的作用主要是将模型的原始输出映射到 0~1之间的概率分布。很多时候对于我们初学者而言,只知道softmax可以做概率映射,但并不了解它内部的原理是如何完…

【28】Kotlin语法进阶——使用协程编写高效的并发程序

提示:此文章仅作为本人记录日常学习使用,若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、Kotlin中的协程1.1 协程的基本用法1.1.1协程与协程作用域1.1.2 使用launch函数创建子协程1.1.3 通过suspend关键声明挂起函数1.1.4 coroutineScope函数 1.2…

支持向量机(Support Vector Machines,SVM)

什么是机器学习 支持向量机(Support Vector Machines,SVM)是一种强大的机器学习算法,可用于解决分类和回归问题。SVM的目标是找到一个最优的超平面,以在特征空间中有效地划分不同类别的样本。 基本原理 超平面 在二…

【深度学习每日小知识】数据增强

数据增强是通过对原始数据进行各种转换和修改来人工生成附加数据的过程,旨在增加机器学习模型中训练数据的大小和多样性。这对于计算机视觉领域尤为重要,因为图像经常被用作输入数据。 计算机视觉中的数据增强 数据增强的主要目标是解决过拟合问题&…

基于Java SSM框架实现固定资产管理系统项目【项目源码+论文说明】

基于java的SSM框架实现固定资产管理系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&a…

HarmonyOS 组件通用属性之位置设置

本文 我们来说 通用属性中的位置设置 主要是针对组件的对齐方式 布局方向 显示位置 做过WEB开发的 对流式布局应该都不陌生 就是 一行放内容 不够放就换行 我们可以先这样写 Entry Component struct Index {build() {Row() {Column() {Stack(){Text("你好")Text(&…