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交换机,用户对交换机的可维护性要求很高。我参加…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
