当前位置: 首页 > news >正文

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语言支持多种基本运算&#xff0c;包括算术运算、逻辑运算、比较运算和向量化运算等。 代码示意 逻辑运算 a <- TRUE b <- FALSElogical_and <- a & b # 逻辑与 logical_or <- a | b # 逻辑或 logical_not <- !a # 逻辑非比较运算 x <…...

Docker容器:docker-compose管理创建LNMP服务并运行Wordpress网站平台

文章目录 一&#xff0e;项目环境1. 环境描述2.项目需求 二&#xff0e;部署过程1.安装Docker2.安装Docker加速器3.Docker-Compose安装部署4.准备依赖文件、配置nginx5.配置mysql6.配置php7.编写docker-compose.yml8.验证 三.容器快照&#xff0c;然后将Docker镜像打包成tar包备…...

实业兴国 守护种源 —— 白露木實®农业的活力之风

高科技领域&#xff0c;芯片是生命线&#xff1b;而在农业领域&#xff0c;种源与芯片在高科技领域的重要性是相同的。保护、发展、培育我国的种质资源&#xff0c;是中国农业发展至为关键的一环。但是&#xff0c;因为思想、观念、认识、技术等方面的原因&#xff0c;让我们错…...

Web3.0

一、Web3.0是什么 Web3.0&#xff08;有时称为“分布式Web”或“去中心化Web”&#xff09;是对互联网的下一代演进的概念。它代表了一种更加分散、去中心化和用户掌控的互联网模式&#xff0c;与传统的Web2.0模型有很大不同。 以下是Web3.0的一些关键特征和概念&#xff1a;…...

精密图纸被窃,知名手表品牌Seiko遭BlackCat勒索软件攻击

据BleepingComputer消息&#xff0c;日本著名手表制造商Seiko在7月末遭到了网络攻击&#xff0c;8月21日&#xff0c;BlackCat&#xff08;又名ALPHV&#xff09;勒索软件组织在其网站上宣布对这起攻击事件负责。 8 月 10 日&#xff0c;Seiko发布了一份数据泄露通知&#xff0…...

K8S如何部署Redis(单机、集群)

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

Flask狼书笔记 | 03_模板

文章目录 3 模板3.1 模板基本使用3.2 模板结构组织3.3 模板进阶 3 模板 模板&#xff08;template&#xff09;&#xff1a;包含固定内容和动态部分的可重用文件。Jinja2模板引擎可用于任何纯文本文件。 3.1 模板基本使用 HTML实体&#xff1a;https://dev.w3.org/html5/htm…...

MySQL 数据备份和数据恢复

目录 一、数据备份 1、概述 2、MySQLdump命令备份 1&#xff09;备份单个数据库中的所有表 2) 备份数据中某个或多个表 3) 备份所有数据库 4&#xff09;备份多个库 5) 只备份一个表或多个表结构 二、数据恢复 三、数据备份与恢复应用 一、数据备份 1、概述 数据备…...

软考高级系统架构设计师系列论文八十二:论软件的可维护性设计

软考高级系统架构设计师系列论文八十二:论软件的可维护性设计 一、摘要二、正文三、总结一、摘要 随着软件大型化,复杂化的发展,软件维护所耗费的资源越来越多,软件可维护性设计日益得到重视。我单位近几年开发综合业务 ATM交换机,用户对交换机的可维护性要求很高。我参加…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...