0


Nginx 入门指南:从安装到配置的全方位探索

1. 简介

什么是 Nginx

Nginx(发音为“engine-x”)是一个高性能的 Web 服务器和反向代理服务器。它不仅能够处理静态文件(如 HTML、图片等),还可以作为负载均衡器和 HTTP 缓存,帮助分担后端服务器的压力。在 Java 开发中,Nginx 常用作将用户请求转发到 Spring Boot 或其他 Java 应用的中间层。

Nginx 的主要功能

  • 静态文件服务:Nginx 能高效地提供静态资源,如 HTML、CSS 和 JavaScript 文件,速度非常快,适合直接向用户展示网页。
  • 反向代理:当用户请求到达 Nginx 时,它可以将请求转发到后端的 Java 应用(如 Spring Boot),然后将响应返回给用户。这有助于隐藏后端服务的细节,提高安全性。
  • 负载均衡:Nginx 可以将用户请求分发到多台后端服务器上,确保流量均匀分配,提高应用的可用性和性能。
  • HTTPS 支持:通过配置 SSL/TLS,Nginx 可以安全地处理加密请求,保护用户的数据传输。

Nginx 的应用场景

  • 静态网站托管:对于小型项目或前端资源,Nginx 是一个理想的选择,因为它能够快速交付静态文件。
  • API 网关:在微服务架构中,Nginx 可以作为 API 网关,将来自用户的请求分发到不同的服务(如 Java 后端服务),实现更好的管理和监控。
  • 负载均衡:在高并发场景下,Nginx 可用作负载均衡器,将请求分散到多台 Java 应用服务器上,提高系统的响应速度和可靠性。
  • 安全防护:通过配置,Nginx 可以防止常见的网络攻击(如 DDoS),保护后端 Java 应用的安全性。

2. 下载 Nginx

官方网站介绍

Nginx官方网站:nginx news

不同版本的选择(稳定版、主线版等)

1、在官网选择download(下载)

2、选择安装的版本(一般选择稳定版本 Linux版本)

3. 安装 Nginx

源码编译安装(推荐)

1、安装依赖包

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

  • gcc:C 编译器,用于将 Nginx 的源代码编译成可执行文件。
  • pcre-devel:用于支持正则表达式功能,Nginx 在处理 URL 重写和匹配时需要这个库。
  • zlib-devel:用于数据压缩,Nginx 支持 Gzip 压缩功能以提高传输效率。
  • opensslopenssl-devel:提供 SSL/TLS 加密功能,允许 Nginx 支持安全的 HTTPS 连接。

2、下载安装包并上传到服务器并解压

下载稳定版本Linux版

进入指定目录 创建Nginx安装目录

cd /usr/local

创建Nginx安装目录 并进入安装目录

mkdir nginx

cd /nginx

3、上传Nginx安装包并且解压

tar -zxvf nginx-1.26.2.tar.gz
(解压Nginx安装包)

查看解压出来的安装包

ls


3、指定Nginx安装目录

./configure --prefix=/usr/local/nginx
(该命令用于指定 nginx 的安装目录 告诉系统Nginx安装在这里)

踩坑(一定要进入解压的安装包再去指定安装目录 否则会报错没有那个文件或目录)

4、编译并执行安装

make && make install
(两个命令一起执行,表示先 make 编译后,再通过 install 安装)

使用包管理器安装(如 apt, yum)

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

sudo yum install epel-release
sudo yum install nginx

安装完成后,使用 sudo systemctl start nginx 启动 Nginx,并用 sudo systemctl enable nginx 设置为开机自启。想深入了解 Nginx 的配置吗?

在 Windows 系统上的安装

conf:存在Nginx配置文件的目录

docs:存放Nginx文档的目录

html:存放静态html文件的目录

logs:存放Nginx日志的目录

temp:存放临时文件的目录

双击nginx目录下的nginx.exe应用程序,一般情况下,会有一个黑色的弹窗一闪而过,这就代表启

动成功了。

只不过,我这里是弹出来一个黑色窗口,问题不大!

然后在浏览器地址栏输入 localhost:80 ,然后再回车(80端口号可以省略,就算输入了也不显示)

如果能看到这个页面,那么nginx启动就成功了。

Docker安装Nginx(推荐)

1、下载镜像

docker pull nginx

2、创建nginx配置文件

启动容器之前要创建nginx配置文件,因为nginx容器只有/etc/nginx目录,没有nginx.conf文件,如

果服务器和容器都没有nginx.conf文件,执行启动命令docke会将nginx.conf作为目录创建,这并不

是我们想要的结果

#创建挂载目录
mkdir -p /usr/local/nginx/conf
mkdir -p /usr/local/nginx/log
mkdir -p /usr/local/nginx/html

容器中的nginx.conf文件和conf.d文件夹复制到宿主机

# 生成容器
docker run --name nginx -p 9001:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /usr/local/nginx/

复制完成后删除容器

docker stop nginx
 
docker rm nginx

3、创建nginx容器运行

docker run \
-p 9002:80 \
--name nginx \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx/log:/var/log/nginx \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-d nginx:latest

4. Nginx 配置文件结构

配置文件位置

踩坑(刚刚指定了安装目录为/usr/local/nginx)编译安装完后就会安装到这里 不用再进到安装包里 我说进去为什么没有sbin 进去的是安装包

  • conf 目录 : 存放配置文件
  • html 目录 : 存放静态资源文件
  • logs 目录 : 存放运行日志文件
  • sbin 目录 : 存放脚本文件

重点目录/文件

  • conf/nginx.conf nginx配置文件
  • html 存放静态文件(html、CSS、Js等)
  • logs 日志目录,存放日志文件
  • sbin/nginx 二进制文件,用于启动、停止Nginx服务

nginx.conf文件结构

在开发中 我们经常需要在conf目录修改nginx.conf文件

修改完后进入到sbin目录执行./nginx -t 检查配置是否正确(如果不正确 检查配置)

如果配置没有问题执行./nginx -s reload命令 重新加载配置文件(无需重启)

5. 启动与停止 Nginx

启动 Nginx

对于Nginx命令 需要进入到sbin目录执行

./nginx

停止 Nginx

./nginx -s stop

重新加载配置

在修改完

nginx.conf

配置文件后,如果直接重启 Nginx 可能会影响线上用户。这时,可以使用重新加载配置的命令,无需完全重启 Nginx。

在重新加载配置之前,建议使用

./nginx -t

命令检查配置文件是否有误,然后再进行配置的重新加载。这样可以确保新的配置正确无误,避免潜在问题。

配置环境变量(可选)

在执行 Nginx 命令时,虽然需要进入到

sbin

目录,但我们可以通过配置环境变量,使得在任何目

录都能方便地执行 Nginx 命令。这就像安装 JDK 后配置环境变量一样,允许你在命令行中随时执

java -version

等命令。

+++ 回到根目录 +++
cd /

+++ 编辑系统配置文件 +++
vim /etc/profile

+++ 配置环境变量 (如下图)+++
PATH=/usr/local/nginx/sbin:$PATH

+++ 刷新配置文件 +++
source /etc/profile

6. 基本使用示例

配置一个简单的静态网站

1、准备一个静态网页 上传到指定位置

2、配置nginx.conf文件

  • server 块:定义一个虚拟主机,处理特定域名和端口的请求。
  • location 块:处理具体的 URL 路径请求。
  • root:指定根目录,路径直接拼接。
  • alias:指定别名,重写请求路径,不改变原始 URI。

3、访问 ip + /test

配置反向代理

实现效果:使用nginx反向代理,访问 ip 直接跳转到ip:8080(tomcat)

1、上传tomcat到服务器 启动tomcat(下载tomcat 上传指定位置并且解压 在bin目录执行./startup.sh启动tomcat 我这里给tomcat文件夹改了个名字 方便后面进行负载均衡)

2、配置nginx.conf文件

proxy_pass

是 Nginx 中用于反向代理的指令,简单来说,它的作用是将客户端请求转发到另一个服务器(通常是后端应用服务器)。

踩坑 如果location 有/ 并且proxy_pass后面没有/ edu路径就会保留

配置负载均衡

Nginx 的负载均衡功能可以把用户的请求分配到多台服务器上,帮助处理更多的流量。这样可以提

高网站的性能和可靠性,确保如果一台服务器出现问题,其他服务器还能继续工作。通过不同的分

配策略(比如轮询或最少连接),Nginx 能够优化资源使用,确保每台服务器的负载保持均衡。

要配置Nginx负载均衡,你可以在配置文件中使用

upstream

指令定义服务器组,然后在

server

块中

使用

proxy_pass

转发请求。举个例子:

upstream myapp {
    server backend1.example.com;
    server backend2.example.com;
}

server {
    location / {
        proxy_pass http://myapp;
    }
}

Nginx支持多种负载均衡算法,包括:

  1. 轮询(round robin):默认算法,依次将请求分发给每个服务器。
  2. 最少连接(least connections):将请求发送给当前连接数最少的服务器,适合连接时间不均的场景。
  3. IP哈希(ip hash):根据请求IP地址分配服务器,确保同一IP的请求始终到同一服务器,适合会话保持。
  4. 权重(weighted):给不同服务器分配权重,按权重比例分配请求,适合性能不均的服务器。

7. 监控与日志

访问日志与错误日志

Nginx的日志主要分为两种:

  1. 访问日志(access log):记录每个请求的信息,比如客户端IP、请求时间、请求方法、URL、响应状态码、响应时间等。这有助于分析流量和监控性能。
  2. 错误日志(error log):记录Nginx运行中的错误信息,比如请求处理失败、配置问题等。可以帮助排查问题和调试。

8. 安全配置(重要)

配置 HTTPS

阿里云官方配置链接:Nginx或Tengine服务器配置SSL证书_数字证书管理服务(原SSL证书)(SSL Certificate)-阿里云帮助中心

1、nginx配置HTTPS需要SSL证书 而SSL证书需要到CA中心申请 这里我们去阿里云进去一个申请

2、创建证书 输入对应的域名

3、申请证书 (在域名里面配置DNS解析 我这里他是自动配置上了)

4、下载对应的证书文件

4、nginx.conf配置

打开nginx.conf,搜索ssl,如果还没配置ssl,可看下面代码配置一下

ssl的server :将证书文件解压后放在配置的路径上,路径最后的证书名称要修改成对应的证书名称。(路径配的是windows的,Linux自行修改一下)

9. 资源与进一步学习

官方文档链接

Nginx中文网:nginx 中文网 官网

进一步学习

博客主页右下角有我联系方式 学习交流 资源 简历指导

推荐在线课程

【【狂神说】Nginx最新教程通俗易懂,40分钟搞定!】 https://www.bilibili.com/video/BV1F5411J7vK/?share_source=copy_web&vd_source=42558fbe7fb2269474043c72b7f3c886

【尚硅谷Nginx教程(亿级流量nginx架构设计)】 https://www.bilibili.com/video/BV1yS4y1N76R/?share_source=copy_web&vd_source=42558fbe7fb2269474043c72b7f3c886

【黑马程序员Nginx教程,Java进阶从0到1学会Nginx分布式框架】 https://www.bilibili.com/video/BV1ov41187bq/?share_source=copy_web&vd_source=42558fbe7fb2269474043c72b7f3c886

标签: nginx 运维 Java

本文转载自: https://blog.csdn.net/weixin_45481821/article/details/142407068
版权归原作者 陶然同学 所有, 如有侵权,请联系我们删除。

“Nginx 入门指南:从安装到配置的全方位探索”的评论:

还没有评论