Linux配置nginx反向代理
在云服务器上部署高并发的服务,使用Nginx作为反向代理是一种常见的做法,可以实现流量分发、负载均衡,同时提升系统的可靠性和性能。
步骤概览:
安装Nginx: 确保服务器已安装Nginx。若未安装,可使用适用于你服务器系统的包管理工具(如apt或yum)进行安装。
配置负载均衡: 利用Nginx的负载均衡功能,将请求分发到多个后端服务器。在配置文件中,通过定义upstream块列出多个后端服务器的地址。
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
然后在服务器配置中使用该upstream:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://backend;
}
}
优化配置: 针对高并发场景,可以进一步优化Nginx的配置,包括:
调整worker_processes和worker_connections以最大程度利用服务器资源。
启用keepalive以减少连接的建立和关闭开销。
设置适当的缓冲区大小和超时值。
监控和日志: 在高并发情况下,监控Nginx的性能和请求情况非常重要。可以使用工具如Prometheus、Grafana等进行监控,并设置合适的日志记录,以便随时跟踪问题和分析性能。
安全性: 确保Nginx的配置和服务器都是安全的。禁用不必要的模块,设置合适的防火墙规则,使用SSL加密等。
详细步骤:
安装Nginx:
首先确保已经安装Nginx,可根据服务器系统使用对应的包管理工具安装,例如在Ubuntu上使用apt:
sudo apt update
sudo apt install nginx
配置反向代理:
编辑Nginx的站点配置文件:
sudo nano /etc/nginx/sites-available/my_service
在配置文件中添加反向代理设置,将请求代理到应用服务器的地址和端口号:
server {
listen 8989; # Nginx监听的端口号
server_name 18.166.226.253; # 服务器的IP地址或域名
location / {
proxy_pass http://127.0.0.1:16258; # 替换为应用服务器的地址和端口号
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_set_header X-Forwarded-Proto $scheme;
}
}
创建一个符号链接启用站点配置:
sudo ln -s /etc/nginx/sites-available/my_service /etc/nginx/sites-enabled/
检查Nginx配置文件是否有效:
sudo nginx -t
如果检查通过,重新加载Nginx的配置:
sudo systemctl reload nginx
启动应用服务:
如果你的应用服务是通过Python脚本运行的,可以创建一个systemd服务来管理它。创建一个.service文件,比如vits_app1.service,然后在其中指定应用程序的路径和所需的环境。然后启用和启动该服务:
sudo systemctl enable vits_app1 # 启用服务
sudo systemctl start
自行编译安装的 Nginx,而不是通过包管理器安装的版本。这可能会导致 systemd 在查找 Nginx 服务单元时出现问题。
Nginx已经以新的配置启动。
常见错误和解决方法:
权限问题导致日志文件和临时文件夹无法创建:
错误信息:nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (13: Permission denied)
解决方法:
确保 /usr/local/nginx/logs 目录及其文件的属主和权限设置正确。
使用以下命令进行设置:
sudo chown -R www-data:www-data /usr/local/nginx/logs
sudo chmod -R 755 /usr/local/nginx/logs
如果 error.log 和 access.log 文件不存在,可以创建它们并设置正确的权限:
sudo touch /usr/local/nginx/logs/error.log
sudo touch /usr/local/nginx/logs/access.log
sudo chown www-data:www-data /usr/local/nginx/logs/error.log
sudo chown www-data:www-data /usr/local/nginx/logs/access.log
sudo chmod 644 /usr/local/nginx/logs/error.log
sudo chmod 644 /usr/local/nginx/logs/access.log
最后,重新启动 Nginx 服务:
sudo /usr/local/nginx/sbin/nginx
端口 80 被占用:
错误信息:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
解决方法:
使用以下命令检查是否有其他进程在使用端口 80:
sudo lsof -i :80
停止占用80端口的Nginx进程:
sudo kill -9 83812
sudo kill -9 103115
重新启动Nginx,确保它绑定到8989端口:
sudo /usr/local/nginx/sbin/nginx
编辑文件路径错误导致保存失败:
错误信息:[ Error writing /etc/nginx/sites-available/my_service:wq: No such file or directory ]
解决方法:
确保在编辑文件时使用正确的编辑器命令和路径。
使用 :wq 命令保存文件时,确保文件路径正确,文件名正确且包含在 /etc/nginx/sites-available/ 目录中。
创建符号链接失败:
错误信息:ln: failed to create symbolic link '/etc/nginx/sites-enabled/': No such file or directory
解决方法:
使用以下命令创建 sites-enabled 目录:
sudo mkdir /etc/nginx/sites-enabled
然后再创建符号链接:
sudo ln -s /etc/nginx/sites-available/my_service /etc/nginx/sites-enabled/
最后,重新启动 Nginx 服务:
sudo systemctl restart nginx
找不到 Nginx 服务单元或命令:
错误信息:Failed to restart nginx.service: Unit nginx.service not found.
解决方法:
检查 Nginx 服务单元名称是否正确,不同的系统可能会有不同的单元名称。尝试使用以下命令重新启动 Nginx 服务:
对于使用 systemd 的系统(如 Ubuntu、Debian):
sudo systemctl restart nginx
对于使用 init.d 的系统(如 CentOS):
sudo service nginx restart
配置 Nginx 服务单元:
创建 systemd 配置文件 /etc/systemd/system/vits_app1.service:
sudo nano /etc/systemd/system/vits_app1.service
编辑并配置 /etc/systemd/system/vits_app1.service 文件,按照需求修改 Unit 和 Service 部分。
eg:
[Unit]
Description=VITS App 1
After=network.target[Service]
Type=simple
ExecStart=/home/ubuntu/anaconda3/bin/python3 /home/ubuntu/vits/so-vits-svc/vits_app1.py
Restart=always
User=ubuntu[Install]
WantedBy=multi-user.target
保存文件后,重新加载 systemd 配置并启动 Nginx 服务单元:
sudo systemctl daemon-reload
sudo systemctl start nginx
验证服务是否正常运行,查看日志:
sudo systemctl status vits_app1
sudo journalctl -u vits_app1
此外,记得确保 Python 脚本 vits_app1.py 是在系统启动时以 systemd 服务的方式在后台运行。
保存文件:
输入文件名:输入 /etc/nginx/sites-available/my_service 并按下 Enter 键。
保存文件:在编辑器中,通常你会按下某个键来保存文件,常见的方式是按下 Ctrl + S。如果没有特别的保存快捷键,你可以尝试 Ctrl + O 来执行 "Write Out" 操作,然后按下 Enter 键确认。
退出编辑器:保存文件后,你可以按下某个键来退出编辑器,常见的方式是按下 Ctrl + X。
如果你在使用 vim 编辑器,你可以按下 Esc 键来确保退出编辑模式,然后输入 :wq 并按下 Enter 键,这将保存文件并退出。
如果你使用的是其他编辑器,可能会有不同的操作步骤,但一般而言,你需要保存文件后退出编辑器。
相关文章:

Linux配置nginx反向代理
在云服务器上部署高并发的服务,使用Nginx作为反向代理是一种常见的做法,可以实现流量分发、负载均衡,同时提升系统的可靠性和性能。 步骤概览: 安装Nginx: 确保服务器已安装Nginx。若未安装,可使用适用于你…...
随便记录记录
统一整理一下各种 pandas读csv import pandas as pd ## 默认会将第一行作为列 df pd.read_csv(path_to_your_file.csv) ## 传递 headerNone 参数来告诉 Pandas 不要将第一行 df pd.read_csv(path_to_your_file.csv, headerNone) ## 使用多种选项来处理数据,如指…...

UbuntuDDE 23.04发布,体验DeepinV23的一个新选择
UbuntuDDE 23.04发布,体验DeepinV23的一个新选择 昨晚网上搜索了一圈,无意看到邮箱一条新闻,UbuntuDDE 23.04发布了 因为前几天刚用虚拟机安装过,所以麻溜的从网站下载了ISO文件,安装上看看。本来没多想,…...

RabbitMQ 消费者
RabbitMQ的消费模式分两种:推模式和拉模式,推模式采用Basic.Consume进行消费,拉模式则是调用Basic.Get进行消费。 消费者通过订阅队列从RabbitMQ中获取消息进行消费,为避免消息丢失可采用消费确认机制 消费者 拉模式拉模式的实…...
软件测试面试真题 | 什么是PO设计模式?
面试官问:UI自动化测试中有使用过设计模式吗?了解什么是PO设计模式吗? 考察点 《page object 设计模式》:PageObject设计模式的设计思想、设计原则 《web自动化测试实战》:结合PageObject在真实项目中的实践与应用情…...

GB2312转UTF-8部分中文乱码
现象 最近写了个txt导入,客户反馈有时候导入的数据,会出现个别中文乱码的现象,但是我之前已经做过编码转换处理了,统一转成了UTF-8。 比如“鞠婧祎”,导入进来是这样: 排查思路 首先看了一下这个文本的编码格式&am…...

项目——电子词典(客户端、服务器交互,字典导入,单词查询)
一、项目要求 登录注册功能,不能重复登录,重复注册单词查询功能历史记录功能,存储单词,意思,以及查询时间基于TCP,支持多客户端连接采用数据库保存用户信息与历史记录将dict.txt的数据导入到数据库中保存。…...

jenkins 是什么?
一、jenkins 是什么? Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行&#…...

无涯教程-PHP - sql_regcase()函数
sql_regcase() - 语法 string sql_regcase (string string) 可以将sql_regcase()函数视为实用程序函数,它将输入参数字符串中的每个字符转换为包含两个字符的带括号的表达式。 sql_regcase() - 返回值 返回带括号的表达式字符串以及转换后的字符。 sql_regcase…...
cesium 实现鼠标中键拖动地图
cesium默认左键拖动地图,中键旋转,再绘图时带来诸多不便。所以改成鼠标中键按下拖动地图,鼠标左键选点。代码如下:【感谢chatGPT】 //改为中建拖动// 假设 viewer 是你的 Cesium Viewer 实例const cameraController viewer.scene…...

低压风机单片机方案
低压风机通常由电机、转子、机壳、进气管、出气管、齿轮和减速机等组成。电机带动转子旋转,旋转的转子带动齿轮和减速机转动,进而形成空气被吸入转子内部,通过旋转而产生的离心力把气体压缩,并将气体排出。 低压风机方案的主控型…...
R语言06-R语言的基本运算
概念 R语言支持多种基本运算,包括算术运算、逻辑运算、比较运算和向量化运算等。 代码示意 逻辑运算 a <- TRUE b <- FALSElogical_and <- a & b # 逻辑与 logical_or <- a | b # 逻辑或 logical_not <- !a # 逻辑非比较运算 x <…...

Docker容器:docker-compose管理创建LNMP服务并运行Wordpress网站平台
文章目录 一.项目环境1. 环境描述2.项目需求 二.部署过程1.安装Docker2.安装Docker加速器3.Docker-Compose安装部署4.准备依赖文件、配置nginx5.配置mysql6.配置php7.编写docker-compose.yml8.验证 三.容器快照,然后将Docker镜像打包成tar包备…...

实业兴国 守护种源 —— 白露木實®农业的活力之风
高科技领域,芯片是生命线;而在农业领域,种源与芯片在高科技领域的重要性是相同的。保护、发展、培育我国的种质资源,是中国农业发展至为关键的一环。但是,因为思想、观念、认识、技术等方面的原因,让我们错…...
Web3.0
一、Web3.0是什么 Web3.0(有时称为“分布式Web”或“去中心化Web”)是对互联网的下一代演进的概念。它代表了一种更加分散、去中心化和用户掌控的互联网模式,与传统的Web2.0模型有很大不同。 以下是Web3.0的一些关键特征和概念:…...

精密图纸被窃,知名手表品牌Seiko遭BlackCat勒索软件攻击
据BleepingComputer消息,日本著名手表制造商Seiko在7月末遭到了网络攻击,8月21日,BlackCat(又名ALPHV)勒索软件组织在其网站上宣布对这起攻击事件负责。 8 月 10 日,Seiko发布了一份数据泄露通知࿰…...

K8S如何部署Redis(单机、集群)
在今天的讨论中,我们将深入研究如何将Redis数据库迁移到云端,以便更好地利用云计算的优势提高数据管理的灵活性。 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis支持多…...

Flask狼书笔记 | 03_模板
文章目录 3 模板3.1 模板基本使用3.2 模板结构组织3.3 模板进阶 3 模板 模板(template):包含固定内容和动态部分的可重用文件。Jinja2模板引擎可用于任何纯文本文件。 3.1 模板基本使用 HTML实体:https://dev.w3.org/html5/htm…...

MySQL 数据备份和数据恢复
目录 一、数据备份 1、概述 2、MySQLdump命令备份 1)备份单个数据库中的所有表 2) 备份数据中某个或多个表 3) 备份所有数据库 4)备份多个库 5) 只备份一个表或多个表结构 二、数据恢复 三、数据备份与恢复应用 一、数据备份 1、概述 数据备…...
软考高级系统架构设计师系列论文八十二:论软件的可维护性设计
软考高级系统架构设计师系列论文八十二:论软件的可维护性设计 一、摘要二、正文三、总结一、摘要 随着软件大型化,复杂化的发展,软件维护所耗费的资源越来越多,软件可维护性设计日益得到重视。我单位近几年开发综合业务 ATM交换机,用户对交换机的可维护性要求很高。我参加…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...