论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
大数据
›
数据仓库与分析
›
Nginx先容及使用
Nginx先容及使用
飞不高
论坛元老
|
2025-4-6 22:47:20
|
显示全部楼层
|
阅读模式
楼主
主题
1539
|
帖子
1539
|
积分
4617
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
1.Nginx先容
Nginx
是一款开源的、高性能的HTTP和反向署理服务器
1.正向署理和反向署理
正向署理(署理客户端)是一种位于客户端和目标服务器之间的中心折务器。客户端通过正向署理服务器向目标服务器发送哀求,署理服务器将哀求转发给目标服务器,并将目标服务器的相应返回给客户端
反向署理(署理服务端)客户端的哀求首先发送到反向署理服务器,反向署理服务器再将哀求转发到后端的服务器。后端服务器处理哀求后,将相应返回给反向署理服务器,反向署理服务器再将相应返回给客户端。
2.负载均衡(Load Balancing)
负载均衡用于在多个服务器之间分配客户端的哀求,以优化资源利用、提高体系的可用性和可靠性。
主要功能
流量分配
:
根据预设的算法(如轮询、最少连接、加权等),将客户端的哀求分配到差别的服务器上,制止某一台服务器过载。
常见的算法包括:
轮询(Round Robin)
:按次序依次分配哀求。
最少连接(Least Connections)
:优先分配到当前连接数最少的服务器。
加权轮询(Weighted Round Robin)
:根据服务器的权重分配哀求。
加权最少连接(Weighted Least Connections)
:结合权重和连接数分配哀求。
IP哈希(IP Hash)
:根据客户端的IP地址进行哈希盘算,将哀求分配到固定的服务器。
故障转移(Failover)
:
当某一台服务器出现故障时,能够自动将流量切换到其他健康的服务器上,确保服务的持续可用。
负载均衡器会定期检查后端服务器的健康状态,自动移除故障服务器,并重新分配流量。
3.Nginx
主要特点
高性能
:
Nginx接纳事件驱动的异步非壅闭架构,能够处理大量的并发连接,性能优于传统的Apache服务器。
它可以轻松处理数万个并发连接,得当高流量的网站。
反向署理和负载均衡
:
Nginx可以作为反向署理服务器,将客户端哀求转发到后端的多个服务器上,并根据设置的策略进行负载均衡。
支持多种负载均衡算法,如轮询、最少连接、IP哈希等。
静态文件服务
:
Nginx对静态文件(如HTML、CSS、JavaScript、图片等)的处理非常高效,可以直接从磁盘读取文件并返回给客户端,减少后端服务器的负担。
2.Nginx启动和停止
1.
启动 Nginx
sudo systemctl start nginx
复制代码
sudo nginx
复制代码
阐明
:启动 Nginx 服务。
2.
停止 Nginx
bash复制
sudo systemctl stop nginx
复制代码
或者
bash复制
sudo nginx -s stop
复制代码
阐明
:立即停止 Nginx 服务。
3.
重启 Nginx
bash复制
sudo systemctl restart nginx
复制代码
或者
bash复制
sudo nginx -s reload
复制代码
阐明
:重新加载 Nginx 设置文件而不中断现有连接。
4.
重新加载设置文件
bash复制
sudo nginx -s reload
复制代码
阐明
:重新加载 Nginx 设置文件而不中断现有连接。如果设置文件有语法错误,Nginx 会拒绝加载。
3.Nginx设置
/etc/nginx/nginx.conf
nginx.conf
├── 全局块
├── events 块
└── http 块
├── 通用设置(日记、MIME等)
├── server 块(一个网站)
│ ├── listen / server_name
│ ├── location /(静态文件或反向署理)
│ └── error_page
└── ...
# 全局块
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
# 事件块
events {
worker_connections 1024;
}
# HTTP 块
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
# 1️⃣ 定义后端服务集群(upstream)
upstream my_backend {
server 127.0.0.1:8081 weight=3 max_fails=3 fail_timeout=30s;
server 127.0.0.1:8082 weight=1;
}
# 服务器块
server {
listen 80;
server_name localhost;
# 位置块
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# 错误页
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# 反向代理示例
location /api/ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
复制代码
proxy_set_header Host $host;
proxy_set_header
指令用于设置转发哀求时的 HTTP 头。
Host $host;
表如今转发哀求时,将原始哀求的 Host 头设置为 $host(即客户端哀求的域名或 IP 地址)。这确保后端服务器能够正确处理哀求,因为它知道哀求原本是针对哪个域名的。
proxy_set_header X-Real-IP $remote_addr;
这行设置设置了 X-Real-IP 头,值为 $remote_addr,即客户端的真实 IP 地址。
由于 Nginx 作为署理服务器,后端服务器看到的哀求来源是 Nginx 的 IP 地址(通常是 127.0.0.1)。通过设置 X-Real-IP,后端服务器可以知道实际发起哀求的客户端 IP 地址。
用途设置示例静态文件服务location / { root /path/to/html; }反向署理proxy_pass http://backend;负载均衡upstream backend { server 127.0.0.1:8001; server 127.0.0.1:8002; }HTTPS 设置使用 listen 443 ssl; 和 ssl_certificate 等参数
3.Nginx安装
1. 什么是 --with-stream?
这个参数是用来
启用 Nginx 的 Stream 模块
的。
默认情况下,Nginx 只支持 HTTP、HTTPS 等基于应用层的协议。
加上 --with-stream,你就可以让 Nginx 作为 TCP 或 UDP 的反向署理使用,比如:
署理 MySQL、Redis、FTP 等 TCP 服务
或者署理 DNS、QUIC 等 UDP 服务
2. 源码安装 Nginx 并启用 --with-stream
1 下载官方 Nginx 源码包:
wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0
复制代码
2. 设置编译选项(重点是加上 --with-stream):
./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-stream \ --with-stream_ssl_module
复制代码
3. 编译并安装:
make -j$(nproc) sudo make install
复制代码
安装完成后,nginx 会被装在 /usr/local/nginx 下。
4.验证安装是否成功
/usr/local/nginx/sbin/nginx -V
复制代码
#启动 nginx:
sudo /usr/local/nginx/sbin/nginx
#然后查看是否启动成功:
ps aux | grep nginx
复制代码
5.设置 nginx 下令软链接(可选)
sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
复制代码
以后就可以直接用 nginx 下令了。
4.Nginx使用
1.准备多个后端服务
方法1:使用 nc(netcat)模拟 TCP 服务
使用 nc 模拟两个简朴的 TCP 服务,分别在端口 5001 和 5002 上监听。
# 模拟两个 TCP 后端服务器(不同端口)
nc -lk 5001 <<< "hello from backend 1"
nc -lk 5002 <<< "hello from backend 2"
复制代码
-l:监听模式。
-k:在连接关闭后继续监听。
<<<:将字符串作为输入通报给 nc。
这样,你就有两个简朴的 TCP 服务,分别在 5001 和 5002 上监听。
2. 设置 Nginx 的 stream 负载均衡
编辑你的 Nginx 设置文件 /usr/local/nginx/conf/nginx.conf,添加如下内容(保存原来的 events {} 块):
stream {
upstream backend_group {
least_conn; # 负载均衡策略:最少连接,可改为 round-robin(默认)
server 127.0.0.1:5001 weight=1 max_fails=2 fail_timeout=20s;
server 127.0.0.1:5002 weight=2 max_fails=4 fail_timeout=40s;
# fail_timeout 多长时间内允许服务器失败的次数达到 max_fails
}
server {
listen 6000;
proxy_pass backend_group;
proxy_connect_timeout 3s; # 设置 Nginx 与后端服务器建立连接的超时时间
tcp_nodelay on; # 禁用 Nagle 算法
}
}
复制代码
nginx -t
sudo nginx -s reload
复制代码
3.测试负载均衡是否见效
使用 telnet 或 netcat 连接 Nginx 暴露的端口:
nc 127.0.0.1 6000
复制代码
多次连接,或者从多个终端连接,你应该会轮流连接到 5001 和 5002,分别输出差别的 "hello from backend"。
for i in {1..10}; do nc 127.0.0.1 6000; done
复制代码
观察输出是否轮流从两个后端返回。
5.查看网络连接状态
sudo netstat -tanp
复制代码
是一个常用的 Linux 下令,用于表现当前体系中全部网络连接的状态。这个下令可以帮助你查看哪些历程正在监听特定端口,以及当前的网络连接情况。
下令表明
netstat
:表现网络连接、路由表、接口统计等网络相关信息。
-t
:表现 TCP 连接。
-a
:表现全部网络连接(包括监听和非监听状态)。
-n
:表现数字形式的地址和端口,而不是解析为域名或服务名称。
-p
:表现每个连接的历程 ID 和历程名称。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
飞不高
论坛元老
这个人很懒什么都没写!
楼主热帖
Java集合的lastlastIndexOfSubList()方 ...
WPF开发经验-实现自带触控键盘的TextBo ...
如何在 K8S 集群范围使用 imagePullSec ...
Python批量采集百度资讯文章,如何自定 ...
【关系型数据库】事务特性及事务隔离级 ...
微信小程序集合3(百度小说+电商+仿哗 ...
MapReduce开发
瓦片地图
浅谈售前的业务思维
mysql总结
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
Oracle
快速回复
返回顶部
返回列表