Nginx的安装、配置与负载均衡实践
Nginx在Linux和Windows上的安装与配置
Linux操作系统环境
1. 准备工作
下载Nginx安装包(例如 nginx-1.19.4.tar.gz)。
2. 安装步骤
- 将安装包上传至Linux服务器的
/usr/local/src目录。 - 解压压缩包:
tar -xvf nginx-1.19.4.tar.gz。 - 删除原压缩包:
rm -f nginx-1.19.4.tar.gz。 - 重命名解压后的目录以便管理:
mv nginx-1.19.4 nginx-source。 - 进入Nginx源代码目录:
cd nginx-source。 - 执行配置检查:
./configure。 - 编译Nginx:
make。 - 安装Nginx:
make install。 - 查找Nginx安装路径:
whereis nginx。通常在/usr/local/nginx。 - 进入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.conf 中 http 块内的一些配置示例:
# 图片服务器反向代理配置
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.conf 中 root 指令指定的路径)。
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;
}
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安装与配置
- 上传JDK安装包(如
jdk-8u51-linux-x64.tar.gz)到/usr/local/src。 - 解压:
tar -xvf jdk-8u51-linux-x64.tar.gz。 - 修改JDK目录名:
mv jdk1.8.0_51 jdk1.8。 - 配置环境变量:编辑
/etc/profile文件,添加以下内容:export JAVA_HOME=/usr/local/src/jdk1.8 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib - 使配置生效:
source /etc/profile。 - 验证安装:
java -version。
数据库与后端项目发布
- 安装数据库(如MariaDB)。
- 确保数据库配置(密码等)与后端项目配置文件(
application.yml)一致。 - 修改后端项目中的图片上传绝对路径为Linux下的路径(如
/usr/local/src/images)。 - 检查项目依赖项,确保打包过程无误。
- 将项目JAR包上传至服务器,并以后台方式启动。
- 通过配置Nginx进行反向代理和负载均衡,实现域名访问。