Centos7安装原生Nginx并配置反向代理

news/2025/2/22 16:00:14

一、背景

当我的应用程序需要集群化部署之时,必然需要一个反向代理,当然Nginx的大名,这里不做更多的介绍了,这里介绍一下Nginx常用的四大阵营

1 Ngnix 原生版本

nginx news

2 Nginx Plus 商用版(收费的)

Advanced Load Balancer, Web Server, & Reverse Proxy - NGINX

3 Nginx  OpenResty 版本

OpenResty® - 开源官方站

4 Tengine 淘宝开源版本

The Tengine Web Server

下面开始我们的安装之路

二、安装

1 下载

打开官网的下载页面: nginx: download

这里我们选择一个稳定的版本点击下载,注意我将部署到Centos中,不要下载成Window版本了

下载之后,上传到虚拟机的/usr/local 目录下

解压 tar zxf nginx-1.24.0.tar.gz

2 安装

进入nginx-1.24.0目录,然后执行./configure 

缺少C语言编译器,需要安装C语言编译器(如果已经安装的可以跳过)

yum install -y gcc

此时再执行安装命令,安装目录为/usr/local/nginx

./configure --prefix=/usr/local/nginx

执行会报下面错误

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

原因是缺少PCRE依赖,下面安装PCRE库

yum install -y pcre pcre-devel

继续执行,可能仍然会报下面这个这个错误

./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.

原因是缺少zlib 依赖,继续安装zlib 库

yum install -y zlib zlib-devel

安装依赖完成后再执行,应该不会再报错了

./configure --prefix=/usr/local/nginx

在执行make

make

make install

执行完成,我们可以看到/usr/local 目录下多了nginx目录

3 启动

进入到nginx目录下,执行 sbin/nginx

然后打开http://192.168.31.110/

这里的IP地址为虚拟机的地址,正常情况下,应该能看到下面页面,如果不行的话,建议检查一下防火墙是否没有关闭

nginx 常用命名

./nginx   启动

./nginx -s stop   快速停止

./nginx -s quit    优雅关闭

./nginx -s reload   重新加载配置

5 安装成系统服务

创建服务脚本

vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

先关闭原来已经启动的nginx

./sbin/nginx -s stop

重新加载系统服务

systemctl daemon-reload

systemctl start nginx

systemctl status nginx

6 设置开机启动

这里的前提是完成了第5步,执行下面命令

systemctl enable nginx.service

到这里我们的nginx安装就算完成了

三、配置反向代理

1 准备2台后端服务器实例

这里我使用之前开发好的,一个应用,分别部署到192.168.31.102:9527,192.168.31.32:9527 这两台服务器上,两个服务都有一个获取商品详情的接口,一会我就用这个接口测试一下Nginx配置是否正确

测试用的接口代码

@GetMapping("/getGoodsDetails")
public GoodsInfo getGoodsDetails(@RequestParam(value = "goodsId") Long goodsId) {
    log.info("getGoodsDetails goodsId: {}", goodsId);
    return goodsInfoMapper.selectByPrimaryKey(goodsId);
}

2 修改nginx/conf/nginx.conf

# 这里是我2台服务器应用的地址  

  upstream httpds {
        server 192.168.31.102:9527;

        server 192.168.31.32:9527;
    }

# 从根目录代理

   location / {
         proxy_pass http://httpds;
   }

重新加载配置文件

systemctl reload nginx

3 测试一下

测试结果:成功的反向代理到预定的2台服务器中


http://www.niftyadmin.cn/n/5357169.html

相关文章

Fiddler-03总结

文章目录 Fiddler总结一、Fiddler的作用二、Fiddler抓取https请求三、Fiddler过滤请求四、看请求和响应五、定位前后端问题六、弱网测试七、mock模拟接口八、篡改数据 Fiddler总结 一、Fiddler的作用 观察请求与返回的信息,定位前后端bug 进行弱网测试 mock模拟接口 绕过前端…

记录:Windows上QML程序打包

0.本文修改记录 &#xff08;2019-9-3&#xff09; 修改了VC环境相关的内容 &#xff08;2020-3-5&#xff09; 修改了QML模块相关的内容 &#xff08;2022-8-31&#xff09;one-rabbit大佬指出打包命令的参数错误&#xff0c;根据文档可知&#xff1a;qmldir应该为exe对应项…

数据库(SQL)

目录 1 触发器 1.1 触发器简介 1.2 触发器的创建 语法 说明 1.3 示例 2 存储过程 2.1 什么是存储过程&#xff08;函数&#xff09; 2.1.1 存储过程和存储函数的区别 2.2 优势 2.3 应用场景 2.4 存储过程的创建和使用 说明 各参数类型所实现的存储过程 无参数无返…

QT 打开项目时显示 “No valid settings file could be found” 错误信息

QT 打开项目时显示“No valid settings file could be found”的错误信息&#xff0c;这通常意味着找不到有效的设置文件。此时&#xff0c;可以尝试以下几种解决方案&#xff1a; 删除项目中的.user文件。这是QT自动生成的用户设置文件&#xff0c;有时候会因为某些原因导致文…

【昕宝爸爸小模块】深入浅出详解之常见的语法糖

深入浅出详解之常见的语法糖 一、&#x1f7e2;关于语法糖的典型解析二、&#x1f7e2;如何解语法糖&#xff1f;2.1&#x1f7e2;糖块一、switch 支持 String 与枚举2.2&#x1f4d9;糖块二、泛型2.3&#x1f4dd;糖块三、自动装箱与拆箱2.4&#x1f341;糖块四、方法变长参数…

vivado 验证I/O和时钟规划

验证I/O和时钟规划 执行I/O和时钟规划后&#xff0c;验证您的设计以确保其符合设计要求。AMD Vivado™ 工具允许您运行DRC来检查违规行为&#xff0c;以及执行SSN分析以估计切换噪声水平。对I/O执行最终验证和时钟分配&#xff0c;您必须实现设计并生成比特流。 运行DRC 运行…

【leetcode题解C++】257.二叉树的所有路径 and 404.左叶子之和 and 112.路径总和

257. 二叉树的所有路径 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->2->5",&…

elementui 开始结束时间可以选择同一天不同时间段

先在main.js中导入 import moment from moment <el-row><el-col :span"12"><el-form-item label"考试开始时间" prop"startTime"><el-date-picker v-model"shiJuanXinXiForm.startTime" style"width: 100…