当前位置:首页 > 技术 > 正文内容

Nginx的安装、配置与负载均衡实践

访客 技术 2026年6月2日 1

Nginx在Linux和Windows上的安装与配置

Linux操作系统环境

1. 准备工作

下载Nginx安装包(例如 nginx-1.19.4.tar.gz)。

2. 安装步骤

  1. 将安装包上传至Linux服务器的 /usr/local/src 目录。
  2. 解压压缩包:tar -xvf nginx-1.19.4.tar.gz
  3. 删除原压缩包:rm -f nginx-1.19.4.tar.gz
  4. 重命名解压后的目录以便管理:mv nginx-1.19.4 nginx-source
  5. 进入Nginx源代码目录:cd nginx-source
  6. 执行配置检查:./configure
  7. 编译Nginx:make
  8. 安装Nginx:make install
  9. 查找Nginx安装路径:whereis nginx。通常在 /usr/local/nginx
  10. 进入Nginx安装目录:cd /usr/local/nginx

3. Nginx服务管理

在Nginx的 sbin 目录下执行以下命令:

  • 启动:./nginx
  • 重载配置:./nginx -s reload
  • 停止:./nginx -s stop

4. 配置文件修改

Nginx的主配置文件通常位于 /usr/local/nginx/conf/nginx.conf。可以下载此文件进行修改,然后上传回服务器覆盖原文件,并通过 ./nginx -s reload 重载配置。

5. 依赖项安装

在编译安装Nginx之前,需要安装必要的依赖库:

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

6. 配置场景示例

以下是 nginx.confhttp 块内的一些配置示例:

# 图片服务器反向代理配置
server {
    listen 80;
    server_name image.jt.com;
    location / {
        root /usr/local/src/images;
    }
}

# 前端业务代理配置
server {
    listen 80;
    server_name www.jt.com;
    location / {
        root dist;
        index index.html;
    }
}

# 后端Tomcat集群定义
upstream tomcats {
    server 192.168.126.129:8091;
    server 192.168.126.129:8092;
    server 192.168.126.129:8093;
}

# 后端服务器反向代理配置
server {
    listen 80;
    server_name manage.jt.com;
    location / {
        proxy_pass http://tomcats;
    }
}

7. Host文件配置

在Linux的 /etc/hosts 文件中配置域名与IP的映射关系,以便本地解析:

192.168.126.129 image.jt.com
192.168.126.129 www.jt.com
192.168.126.129 manage.jt.com

Windows操作系统环境

1. Nginx服务管理

在Nginx安装目录下,通过命令行(管理员权限运行CMD)执行以下命令:

  • 启动:start nginx
  • 重载配置:nginx -s reload
  • 停止:nginx -s stop

2. 配置文件修改

修改 nginx.conf 文件。以下是Windows环境下的配置示例:

# 图片服务器配置
server {
    listen 80;
    server_name image.jt.com;
    location / {
        root D:/images; # 指定图片存储的本地磁盘路径
    }
}

# 前端服务器配置
server {
    listen 80;
    server_name www.jt.com;
    location / {
        root dist;
        index index.html;
    }
}

# Tomcat集群定义 (轮询策略)
upstream tomcats {
    server 127.0.0.1:8091;
    server 127.0.0.1:8092;
}

# 后端服务器配置
server {
    listen 80;
    server_name manage.jt.com;
    location / {
        proxy_pass http://tomcats;
    }
}

3. Host文件配置

修改 C:\Windows\System32\drivers\etc\hosts 文件:

127.0.0.1 image.jt.com
127.0.0.1 www.jt.com
127.0.0.1 manage.jt.com

4. 前端部署

将前端项目打包后的 dist 目录中的文件复制到Nginx的根目录(或根据 nginx.confroot 指令指定的路径)。

5. 前后端请求地址修改

在前端项目中,需要将原来的本地请求地址(如 http://localhost:8091)修改为配置的域名(如 http://manage.jt.com)。这通常涉及修改 main.js 或相关Vue组件中的API请求地址。

// main.js 示例
import axios from 'axios';
axios.defaults.baseURL = 'http://manage.jt.com/';

// AddItem.vue 示例
uploadUrl: "http://manage.jt.com/file/upload",

Nginx反向代理与负载均衡

Nginx进程模型

Nginx启动后通常有两个进程:一个主进程(master process)和若干个工作进程(worker process)。主进程负责读取和加载配置文件,并管理工作进程;工作进程负责处理实际的网络请求。

Nginx命令详解

  • start nginx (Windows) / ./nginx (Linux): 启动Nginx服务。
  • nginx -s reload: 重新加载配置文件,使配置生效而无需重启服务。
  • nginx -s stop: 优雅地停止Nginx服务。

反向代理配置说明

nginx.conf 文件中,使用 server 块来定义一个虚拟主机或代理服务。关键指令包括:

  • listen: 指定Nginx监听的端口。
  • server_name: 指定匹配的域名。
  • location / { ... }: 定义处理请求的路径。/ 表示匹配所有请求。
  • root: 指定静态资源的根目录。
  • index: 指定默认的索引文件。
  • proxy_pass: 将请求转发到指定的后端服务器。

负载均衡策略

使用 upstream 块来定义一组后端服务器,Nginx会根据配置的策略将请求分发给这些服务器。常见的策略有:

  • 轮询 (Round Robin): 默认策略,依次将请求分配给每个服务器。
  • 权重 (Weight): 为服务器分配权重,权重越高的服务器接收的请求越多。
  • upstream tomcats {
        server 127.0.0.1:8091 weight=4;
        server 127.0.0.1:8092 weight=1;
    }
    
  • IP Hash (IP Hash): 根据请求来源IP地址进行哈希计算,将同一个IP地址的请求始终转发到同一台服务器。
    upstream tomcats {
        ip_hash;
        server 127.0.0.1:8091;
        server 127.0.0.1:8092;
    }
    

项目发布与调试

1. 后端项目发布

  • 确保后端项目的配置文件(如 application.yml)中的数据库连接、图片上传目录等设置正确。在Linux环境下,图片上传目录通常需要使用绝对路径(如 /usr/local/src/images)。
  • 将后端项目打包成可执行的JAR文件。
  • 将JAR包上传到服务器的指定目录(如 /usr/local/src/tomcats)。
  • 使用 java -jar xxx.jar 命令启动后端服务。为避免占用终端,可使用 nohup java -jar xxx.jar > xxx.log 2&>1 & 的方式在后台运行。
  • 使用 ps -ef | grep java 查看进程,使用 kill PID (或 kill -9 PID) 来杀死进程。

2. 前端项目发布

  • 打包前端项目(如执行 npm run build)。
  • 将打包生成的 dist 目录下的文件复制到Nginx配置的静态文件根目录。

3. 常见问题与排查

  • 404错误: 检查Nginx配置文件中的 root 路径是否正确,或后端API请求地址是否配置错误。
  • 大小写敏感: Linux系统对文件名和路径大小写敏感,需注意检查。
  • 端口占用: 确保Nginx监听的80端口未被其他服务占用。
  • HTTP自动转HTTPS: 如果遇到此问题,可在浏览器开发者工具中清除HSTS设置(chrome://net-internals/#hsts),并清除浏览器缓存。

虚拟机与环境搭建

虚拟机IP配置

在虚拟化软件(如VMware)中,为虚拟机配置静态IP地址,确保其与宿主机以及其他虚拟机在同一网段,方便网络通信。

Linux基础命令

  • ifconfig / ip addr: 查看网络接口配置。
  • ping: 测试网络连通性。

远程连接工具

推荐使用 MobaXterm (https://mobaxterm.mobatek.net/download.html) 进行Linux服务器的远程管理。

JDK安装与配置

  1. 上传JDK安装包(如 jdk-8u51-linux-x64.tar.gz)到 /usr/local/src
  2. 解压:tar -xvf jdk-8u51-linux-x64.tar.gz
  3. 修改JDK目录名:mv jdk1.8.0_51 jdk1.8
  4. 配置环境变量:编辑 /etc/profile 文件,添加以下内容:
    export JAVA_HOME=/usr/local/src/jdk1.8
            export PATH=$JAVA_HOME/bin:$PATH
            export CLASSPATH=.:$JAVA_HOME/lib
            
  5. 使配置生效:source /etc/profile
  6. 验证安装:java -version

数据库与后端项目发布

  • 安装数据库(如MariaDB)。
  • 确保数据库配置(密码等)与后端项目配置文件(application.yml)一致。
  • 修改后端项目中的图片上传绝对路径为Linux下的路径(如 /usr/local/src/images)。
  • 检查项目依赖项,确保打包过程无误。
  • 将项目JAR包上传至服务器,并以后台方式启动。
  • 通过配置Nginx进行反向代理和负载均衡,实现域名访问。
标签: Nginx

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。