高可用实战之Nginx + Apache篇
目录
二. 安装Nginx使用ngx_http_upstream_module 模块
三. 另外 183,184 两台分配 安装 Apache HTTP Server (httpd)
4. 默认端口是80端口,把端口分别换成18091,18092
6. 将ServerName 127.0.0.1 添加到文件的第101行
1.上传一张图片到183服务器的静态目录下,并界面验证访问,静态资源请求正常。
一 . 准备4台服务器
hostnamectl set-hostname Nginx01
hostnamectl set-hostname Nginx02
hostnamectl set-hostname Apache01
hostnamectl set-hostname Apache02
服务器IP |
系统 |
主要组件 |
192.168.100.181 |
Rocky Linux 10.0 (Red Quartz) |
nginx |
192.168.100.182 |
Rocky Linux 10.0 (Red Quartz) |
nginx |
192.168.100.183 |
Rocky Linux 10.0 (Red Quartz) |
httpd |
192.168.100.184 |
Rocky Linux 10.0 (Red Quartz) |
httpd |
二. 安装Nginx使用ngx_http_upstream_module 模块
ngx_http_upstream_module:配置后端服务器组,支持负载均衡和故障转移。
Nginx 官网下载最新版本的安装包,不使用服务器yum安装,可能不是最新的,这样安装对扫漏又来进行打补丁解更方便。上传Nginx安装包至服务器,解压并进入目录执行安装。确保安装过程中包含ngx_http_upstream_module模块。编译安装时通过--add-module参数指定模块路径,若模块已内置则无需额外添加。安装完成后,修改Nginx配置文件nginx.conf,在http块中使用upstream指令定义后端服务器组,设置负载均衡算法如轮询、加权轮询或IP哈希等,同时配置server块中的proxy_pass指向定义的upstream名称,完成基础负载均衡配置。
Nginx 官网地址:nginx
ngx_http_upstream_module:模块地址 Module ngx_http_upstream_module
截止2025八月Nginx 版本1.29
下载Nginx1.29.0的地址:https://nginx.org/download/nginx-1.29.0.tar.gz
yum -y install wget vim tar net-tools
1. 下载 Nginx 源代码
wget https://nginx.org/download/nginx-1.29.0.tar.gz
2. 解压源码包
tar -zxvf nginx-1.29.0.tar.gz
cd nginx-1.29.0
3. 安装依赖
当前系统属于红帽系列
yum groupinstall "Development Tools"
yum install pcre-devel zlib-devel openssl-devel
4. 配置编译选项
ngx_http_upstream_module 是 Nginx 默认启用的模块,养成习惯安装指定启动模块。
常规安装包含的模块
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_upstream_module
--prefix=/usr/local/nginx:指定 Nginx 的安装路径。
--with-http_ssl_module:启用 SSL 支持,用于 HTTPS。
--with-http_upstream_module:启用上游模块,用于设置负载均衡和反向代理
备注:默认是不要显式地启用 --with-http_upstream_module,因为它已经是默认启用的模块
编译执行
./configure --prefix=/usr/local/nginx --with-http_ssl_module
这个错显示编译的时候缺少pcre库。
本次统一都是用二进制包安装;
pcre库官网地址:https://www.pcre.org/
下载地址:https://psychz.dl.sourceforge.net/project/pcre/pcre2/10.37/pcre2-10.37.tar.gz?viasf=1
tar -xzvf pcre2-10.37.tar.gz
使用 --with-pcre=<path> 指定 PCRE 库的路径编译通过
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre=/home/pcre2-10.37
5. 编译和安装 Nginx
配置完后,继续使用 make 和 make install 来编译并安装 Nginx:
make && make install
6. 验证启用的模块
完成编译和安装后,你可以通过以下命令查看已启用的模块:
/usr/local/nginx/sbin/nginx -V
7.安装完成,启动
/usr/local/nginx/sbin/nginx
查看端口是否开启
ss -tuln | grep :80
查看nginx 进程:
ps aux | grep nginx
查看防火墙状态:
firewall-cmd --state
开放指定端口(例如 80)
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload
修改配置后重新加载配置重启
/usr/local/nginx/sbin/nginx -s reload
Nginx停止
/usr/local/nginx/sbin/nginx -s stop
三. 另外 183,184 两台分配 安装 Apache HTTP Server (httpd)
1. 安装httpd
yum install httpd -y
2. 启动httpd
systemctl start httpd
3. 查看httpd的状态
systemctl status httpd
4. 默认端口是80端口,把端口分别换成18091,18092
192.168.100.183 端口 18091
sed -i 's/^Listen 80$/Listen 18091/' /etc/httpd/conf/httpd.conf
192.168.100.184 端口 18092
sed -i 's/^Listen 80$/Listen 18092/' /etc/httpd/conf/httpd.conf
5. 检查配置文件是否有效
apachectl configtest
6. 将ServerName 127.0.0.1 添加到文件的第101行
sed -i '101i ServerName 127.0.0.1' /etc/httpd/conf/httpd.conf
7. 检查端口是否被占用
netstat -tuln | grep -E '18091|18092'
8. 查看httpd的错误日志
tail -f /var/log/httpd/error_log
9. 检查和设置日志目录权限
确保 Apache 有权访问日志目录。检查日志目录的权限,例如:
ls -ld /var/log/httpd/
确保 Apache 用户对日志目录具有写权限。如果没有权限,可以使用以下命令修复权限:
chown -R apache:apache /var/log/httpd/
chmod -R 755 /var/log/httpd/
解决方法: 如果您怀疑 SELinux 是问题的根源,可以临时禁用 SELinux,看看是否可以启动 Apache:
setenforce 0
10. 分别开放指定端口(例如18091|18092)
192.168.100.183 端口 18091
firewall-cmd --permanent --add-port=18091/tcp
firewall-cmd --reload
192.168.100.184 端口 18092
firewall-cmd --permanent --add-port=18092/tcp
firewall-cmd --reload
11. 自定义网站存放路径
mkdir -p /home/www/mywebsite/
设置权限
chown -R apache:apache /home/www/mywebsite/
chmod -R 755 /home/www/mywebsite
sed -i 's|DocumentRoot "/var/www/html"|DocumentRoot "/home/www/mywebsite"|' /etc/httpd/conf/httpd.conf
sudo sed -i '/<Directory "\/var\/www\/html">/,/<\/Directory>/c\<Directory "/home/www/mywebsite">\n Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted\n</Directory>' /etc/httpd/conf/httpd.conf
12. 在183,184机器上自己的目录站点上分别添加index.html
[root@Apache02 mywebsite]# ll -ld ../mywebsite/
drwxr-xr-x. 2 apache apache 6 Aug 12 19:44 ../mywebsite/
[root@Apache02 mywebsite]# vim index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Apache2 Site</title> </head> <body> <h1>这是 Apache02 站点!</h1> <p>IP地址:192.168.100.184</p> <p>端口:18092</p> <p>01和02站点内容一样</p> </body> </html> |
[root@Apache01 mywebsite]# pwd
/home/www/mywebsite
[root@Apache01 mywebsite]# vim index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Apache2 Site</title> </head> <body> <h1>这是 Apache01 站点!</h1> <p>IP地址:192.168.100.183</p> <p>端口:18091</p> <p>01和02站点内容一样</p> </body> |
四. 通过配置Nginx来实现支持负载均衡和故障转移
1. 配置实现负载均衡
官网参考:Module ngx_http_upstream_module
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf_back
使用 sed 删除注释行让看起更加清爽:
sed -i '/^\s*#/d' /usr/local/nginx/conf/nginx.conf
vim nginx.conf
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream lb_webserver { server 192.168.100.183:18091 weight=5; server 192.168.100.184:18092 weight=5; } server { listen 80; server_name localhost; location / { proxy_pass http://lb_webserver; } } } |
2. 验证配置文件是否有问题
[root@Nginx01 conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
3. 加载配置并重启
[root@Nginx01 conf]# /usr/local/nginx/sbin/nginx -s reload
[root@Nginx01 conf]#
4. 此时此刻完成了完整的负载均衡
weight:表示服务器的权重,权重值越高,Nginx 将分配给该服务器的请求就越多。在配置负载均衡时,如果没有指定 weight,则默认所有服务器的权重为 1。 都为5的时候,你一次我一次的轮询负责。根据生产实际的情况,权重大小调整越小轮询的值越小,意味着轮询的次数越少,权重值越大,轮询的次数越多。
示例:
echo "这是 Apache01 站点!IP地址:192.168.100.183; 端口:18091; 01和02站点内容一样" > /home/www/mywebsite/index.html
echo "这是 Apache02 站点!IP地址:192.168.100.184; 端口:18092; 01和02站点内容一样" > /home/www/mywebsite/index.html
5. 把权重一个调整成2,一个调整成5
server 192.168.100.183:18091 weight=2;
server 192.168.100.184:18092 weight=5;
6. Nginx 之故障转移
轮询节点可以是多台,备份节点也可以是多台。官网例子:
server 192.168.100.183:18091 weight=5; #轮询节点
server 192.168.100.184:18092 backup; #轮询节点全部故障后跳转到备份节点
让183服务停止,验证是否可以跳转到备份节点:
7. Nginx 之动静分离
动静分离(Static and Dynamic Separation)是指将静态资源(如图片、CSS、JavaScript文件等)和动态请求(如PHP、Python、Java等后端处理请求)分别由不同的服务器或不同的路径进行处理。Nginx作为反向代理服务器,可以帮助我们高效地实现这一分离。
静态资源:是指不需要服务器处理的文件,通常是图片、CSS、JavaScript、字体文件等。这些文件通常可以直接从磁盘读取,响应速度较快。
动态请求:是指需要服务器进行处理并生成动态内容的请求,通常包括数据查询、页面生成等操作。比如,PHP、Java、Node.js等后台语言处理的请求。
性能优化:
- 静态资源通常无需经过应用服务器的处理,可以直接由 Nginx 提供,减少了应用服务器的负担。
- 静态资源文件通常较大且请求频繁,直接通过 Nginx 提供可以大大提高响应速度。
#静态缓存30天 expires 30d; |
1.上传一张图片到183服务器的静态目录下,并界面验证访问,静态资源请求正常。
http://192.168.100.183:18091/static/01.jpg
2. 在184 上面新建目录,模拟后端请求json
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>动态请求文件内容</title> </head> <body> <h1>文件内容展示</h1> <div id="content">正在加载...</div> <script> fetch('dynamic/file.json').then(response => response.json()) // 解析 JSON 格式的响应 .then(data => { // 处理并展示 JSON 数据 console.log(data); document.getElementById('content').innerText = JSON.stringify(data, null, 2); }) .catch(error => { document.getElementById('content').innerText = '错误: ' + error.message; }); </script> </body> |
{ "name": "张三", "age": 30, "phoneNumbers": [ { "type": "home", "number": "028-11111111" }, { "type": "mobile", "number": "15908113332" } ], "isActive": true } |
![]() |
3. 配置nginx 动静分离
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #静态请求的服务器组 upstream lb_static { server 192.168.100.183:18091 weight=5; } #动态请求的服务器组 upstream lb_dynamic { zone upstream_dynamic 64k; server 192.168.100.184:18092 weight=5; } server { listen 80; server_name localhost; location / { proxy_pass http://lb_dynamic; } location /static/ { proxy_pass http://lb_static; expires 30d; } } } |
备注: 同一个域名,动态请求走的动态服务器组,静态文件走的是静态文件组。
Nginx 模块及参数的详细解释
模块名称 |
说明 |
示例 |
ngx_http_core_module |
Nginx 核心模块,提供基本的 HTTP 功能和配置支持。 |
worker_processes 4; 用于配置 Nginx 使用的工作进程数。 |
ngx_http_access_module |
控制访问权限的模块,通过 IP 地址或其他条件来控制访问权限。 |
deny 192.168.1.1; 阻止指定 IP 地址的访问。 |
ngx_http_addition_module |
允许在响应中附加内容,用于动态地修改 HTTP 响应。 |
add_header X-Frame-Options SAMEORIGIN; 在响应中添加 X-Frame-Options 头部。 |
ngx_http_api_module |
提供 API 功能的模块。 |
location /api { api; } 配置 API 路由。 |
ngx_http_auth_basic_module |
支持基本认证的模块,通过用户名和密码保护资源。 |
auth_basic "Restricted"; 启用基本认证,要求输入用户名和密码。 |
ngx_http_auth_jwt_module |
支持通过 JWT (JSON Web Token) 实现认证的模块。 |
auth_jwt "secret"; 使用 JWT 进行认证。 |
ngx_http_auth_request_module |
支持通过外部请求进行认证的模块。 |
auth_request /auth; 将认证请求转发给 /auth 路径。 |
ngx_http_autoindex_module |
生成目录列表的模块,当目录没有 index.html 等文件时,会列出目录内容。 |
autoindex on; 打开目录自动索引功能。 |
ngx_http_browser_module |
根据浏览器的 User-Agent 提供不同的响应内容。 |
if ($http_user_agent ~ "MSIE") { add_header X-Content-Type-Options nosniff; } |
ngx_http_charset_module |
设置响应字符集的模块。 |
charset UTF-8; 设置响应字符集为 UTF-8。 |
ngx_http_dav_module |
用于支持 WebDAV 协议的模块,允许上传、下载和管理文件。 |
dav_methods PUT DELETE MKCOL COPY MOVE; 配置 WebDAV 支持的 HTTP 方法。 |
ngx_http_empty_gif_module |
返回一个 1x1 像素的空白 GIF 图像的模块,常用于占位或防止爬虫访问。 |
location /empty.gif { empty_gif; } 返回一个空白 GIF 图像。 |
ngx_http_f4f_module |
支持 F4F (FastCGI to FastCGI) 功能的模块。 |
fastcgi_pass unix:/tmp/php-fpm.sock; 配置 FastCGI 后端服务器。 |
ngx_http_fastcgi_module |
支持 FastCGI 协议的模块,用于连接 PHP、Perl 等动态语言的应用。 |
fastcgi_pass 127.0.0.1:9000; 配置 FastCGI 服务器地址。 |
ngx_http_flv_module |
提供对 FLV 视频格式的支持,允许流式传输 FLV 视频文件。 |
location /video/ { flv; } 启用 FLV 文件的支持。 |
ngx_http_geo_module |
根据客户端 IP 地址来设置变量,例如实现地理位置的限制。 |
geo $country { default CN; 192.168.1.0/24 US; } 根据 IP 地址设置国家变量。 |
ngx_http_geoip_module |
基于 GeoIP 数据库进行地理位置识别的模块。 |
geoip_country /usr/share/GeoIP/GeoIP.dat; 根据 IP 地址识别国家。 |
ngx_http_grpc_module |
支持 gRPC 协议的模块。 |
grpc_pass grpc://localhost:50051; 配置 gRPC 服务器地址。 |
ngx_http_gunzip_module |
支持解压 GZIP 压缩内容的模块。 |
gunzip on; 启用 GZIP 解压缩功能。 |
ngx_http_gzip_module |
支持压缩 HTTP 响应内容为 GZIP 格式的模块。 |
gzip on; 启用 GZIP 压缩。 |
ngx_http_gzip_static_module |
支持为静态文件启用 GZIP 压缩的模块。 |
gzip_static on; 为静态文件启用 GZIP 压缩。 |
ngx_http_headers_module |
设置 HTTP 响应头的模块。 |
add_header X-Content-Type-Options nosniff; 设置响应头。 |
ngx_http_hls_module |
支持 HLS (HTTP Live Streaming) 的模块。 |
hls on; 开启 HLS 支持。 |
ngx_http_image_filter_module |
图像处理模块,可以对图像进行裁剪、缩放等操作。 |
image_filter resize 320 240; 对图像进行缩放操作。 |
ngx_http_index_module |
配置默认的索引文件,例如 index.html。 |
index index.html; 设置默认文件为 index.html。 |
ngx_http_internal_redirect_module |
支持内部重定向的模块,可以在不发起新的请求的情况下重定向请求。 |
error_page 404 = /404.html; 配置内部重定向到自定义页面。 |
ngx_http_js_module |
支持 JavaScript 的模块,用于更复杂的 HTTP 请求处理。 |
js_include some_script.js; 包含 JavaScript 文件。 |
ngx_http_keyval_module |
支持通过键值对设置变量的模块。 |
set $var value; 设置一个变量。 |
ngx_http_limit_conn_module |
限制连接数的模块。 |
limit_conn_zone $binary_remote_addr zone=addr:10m; 限制每个客户端的连接数。 |
ngx_http_limit_req_module |
限制请求速率的模块。 |
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=1r/s; 限制请求频率。 |
ngx_http_log_module |
提供日志记录功能的模块,常用于访问日志和错误日志。 |
access_log /var/log/nginx/access.log; 配置访问日志。 |
ngx_http_map_module |
根据条件设置变量值的模块,例如根据请求头或 URL 动态决定响应内容。 |
map $http_ua $blocked { default 0; "BadBot" 1; } 根据 User-Agent 判断是否屏蔽访问。 |
ngx_http_memcached_module |
支持连接 Memcached 的模块。 |
memcached_pass 127.0.0.1:11211; 配置 Memcached 服务器地址。 |
ngx_http_mirror_module |
支持请求镜像的模块,用于调试或故障排查。 |
mirror /mirror; 启用请求镜像功能。 |
ngx_http_mp4_module |
支持 MP4 视频流的模块,通常用于播放 MP4 格式的视频文件。 |
mp4; 启用 MP4 文件流支持。 |
ngx_http_oidc_module |
支持 OpenID Connect 的认证模块。 |
oidc_provider http://oidc.example.com; 配置 OpenID Connect 提供者。 |
ngx_http_perl_module |
支持 Perl 脚本处理的模块。 |
perl_set $foo 'sub { return 42; }'; 设置 Perl 脚本变量。 |
ngx_http_proxy_module |
支持反向代理的模块,将请求转发到后端服务器。 |
proxy_pass http://backend; 配置代理服务器地址。 |
ngx_http_proxy_protocol_vendor_module |
支持 Proxy Protocol 协议的模块。 |
proxy_protocol on; 启用 Proxy Protocol 支持。 |
ngx_http_random_index_module |
提供随机选择索引文件的模块。 |
random_index on; 启用随机索引文件选择功能。 |
ngx_http_realip_module |
通过 X-Real-IP 或 X-Forwarded-For 等头部获取客户端真实 IP 地址的模块。 |
real_ip_header X-Forwarded-For; 配置获取真实 IP 地址的请求头部。 |
ngx_http_referer_module |
用于访问控制和检查 HTTP Referer 头的模块。 |
referer_check www.example.com; 检查 Referer 是否来自特定域名。 |
ngx_http_rewrite_module |
进行 URL 重写的模块。 |
rewrite ^/oldpage$ /newpage permanent; 将旧 URL 重写为新 URL。 |
ngx_http_scgi_module |
支持 SCGI 协议的模块。 |
scgi_pass 127.0.0.1:4000; 配置 SCGI 服务器地址。 |
ngx_http_secure_link_module |
支持安全链接的模块,用于生成和验证带有签名的 URL。 |
secure_link $arg_st $arg_e; 使用 URL 中的参数验证链接。 |
ngx_http_session_log_module |
提供会话日志记录的模块。 |
session_log /var/log/nginx/session.log; 配置会话日志。 |
ngx_http_slice_module |
支持将大文件切片的模块,常用于大文件下载。 |
slice 1m; 将响应内容切片为 1MB 大小。 |
ngx_http_split_clients_module |
用于将请求分发到不同的服务器或路径的模块。 |
split_clients $remote_addr $key { 0.5% /path1; 99.5% /path2; } 根据客户端地址分流请求。 |
ngx_http_ssi_module |
支持服务器端包含 (SSI) 的模块,通常用于动态生成网页内容。 |
ssi on; 启用服务器端包含功能。 |
ngx_http_ssl_module |
提供 HTTPS 支持的模块,用于加密 HTTP 流量。 |
ssl_certificate /path/to/certificate.crt; 配置 SSL 证书。 |
ngx_http_status_module |
提供服务器状态信息的模块。 |
location /status { stub_status on; } 显示 Nginx 服务器状态信息。 |
ngx_http_stub_status_module |
提供简要的服务器状态信息的模块。 |
location /status { stub_status on; } 显示 Nginx 服务器状态信息。 |
ngx_http_sub_module |
支持在响应中进行内容替换的模块。 |
sub_filter 'old' 'new'; 在响应中替换文本。 |
ngx_http_upstream_module |
配置后端服务器组,支持负载均衡和故障转移。 |
upstream backend { server 127.0.0.1:8080; server 127.0.0.1:8081; } 配置负载均衡的后端服务器。 |
ngx_http_upstream_conf_module |
提供更细粒度的后端服务器配置选项。 |
upstream backend { server 127.0.0.1:8080 weight=3; } 配置权重负载均衡。 |
ngx_http_upstream_hc_module |
提供后端服务器健康检查功能。 |
upstream backend { server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; } 配置健康检查。 |
ngx_http_userid_module |
提供用户 ID 功能的模块。 |
userid on; 启用用户 ID 功能。 |
ngx_http_uwsgi_module |
支持 uWSGI 协议的模块,通常用于与 Python 应用连接。 |
uwsgi_pass 127.0.0.1:4000; 配置 uWSGI 服务器地址。 |
ngx_http_v2_module |
支持 HTTP/2 协议的模块。 |
http2 on; 启用 HTTP/2 协议。 |
ngx_http_v3_module |
支持 HTTP/3 协议的模块。 |
http3 on; 启用 HTTP/3 协议。 |
ngx_http_xslt_module |
提供对 XSLT 转换的支持。 |
xslt_stylesheet /styles/style.xsl; 应用 XSLT 样式表。 |
ngx_mail_core_module |
Nginx 邮件模块的核心功能,支持 POP3、IMAP、SMTP 等邮件协议。 |
mail { server { listen 25; } } 配置邮件服务器。 |
ngx_mail_auth_http_module |
通过 HTTP 实现邮件认证的模块。 |
auth_http http://auth.example.com; 配置邮件认证 HTTP 请求。 |
ngx_mail_proxy_module |
支持邮件代理功能的模块。 |
proxy_pass smtp://127.0.0.1:25; 配置邮件代理。 |
ngx_mail_realip_module |
获取真实客户端 IP 地址的模块,适用于邮件代理。 |
real_ip_header X-Real-IP; 配置邮件的真实 IP 获取。 |
ngx_mail_ssl_module |
提供邮件协议的 SSL/TLS 加密支持。 |
ssl_certificate /path/to/certificate.crt; 配置邮件 SSL 证书。 |
ngx_mail_imap_module |
支持 IMAP 协议的邮件模块。 |
imap_pass 127.0.0.1:1143; 配置 IMAP 服务器地址。 |
ngx_mail_pop3_module |
支持 POP3 协议的邮件模块。 |
pop3_pass 127.0.0.1:110; 配置 POP3 服务器地址。 |
ngx_mail_smtp_module |
支持 SMTP 协议的邮件模块。 |
smtp_pass 127.0.0.1:25; 配置 SMTP 服务器地址。 |
ngx_stream_core_module |
Nginx 流式数据传输模块,支持 TCP/UDP 等协议。 |
stream { server { listen 12345; proxy_pass 127.0.0.1:54321; } } 配置流式代理。 |
ngx_stream_access_module |
用于限制流式连接的模块。 |
allow 192.168.1.0/24; deny all; 限制访问流式服务的 IP 地址。 |
ngx_stream_geo_module |
用于流式协议中的地理位置相关配置。 |
geo $geoip_country { default CN; 192.168.1.0/24 US; } 配置流式协议中的地理位置。 |
ngx_stream_geoip_module |
基于 IP 地址的地理位置识别模块,适用于流式协议。 |
geoip_country /path/to/GeoIP.dat; 基于 IP 地址配置地理位置。 |
ngx_stream_js_module |
用于流式协议中的 JavaScript 支持。 |
js_include stream_script.js; 配置流式协议中的 JavaScript 文件。 |
ngx_stream_keyval_module |
用于在流式协议中设置键值对变量的模块。 |
set $stream_key value; 配置流式协议中的键值变量。 |
ngx_stream_limit_conn_module |
用于限制流式连接的模块。 |
limit_conn_zone $binary_remote_addr zone=conn_limit:10m; 限制流式连接数。 |
ngx_stream_log_module |
用于记录流式协议的日志。 |
access_log /var/log/nginx/stream_access.log; 配置流式协议的日志。 |
ngx_stream_map_module |
用于流式协议中进行动态映射设置的模块。 |
map $remote_addr $limit_conn { 192.168.1.1 10; default 5; } 配置流式连接的限制。 |
ngx_stream_mqtt_preread_module |
支持 MQTT 协议预读取的模块。 |
mqtt_preread on; 启用 MQTT 协议的预读取功能。 |
ngx_stream_mqtt_filter_module |
用于流式协议中的 MQTT 协议过滤功能。 |
mqtt_filter on; 启用 MQTT 协议的过滤功能。 |
ngx_stream_pass_module |
用于流式代理的模块。 |
proxy_pass tcp://127.0.0.1:8080; 配置流式代理服务器。 |
ngx_stream_proxy_protocol_vendor_module |
支持 Proxy Protocol 协议的流式模块。 |
proxy_protocol on; 启用 Proxy Protocol 支持。 |
ngx_stream_realip_module |
用于流式协议获取真实客户端 IP 地址的模块。 |
real_ip_header X-Real-IP; 配置流式协议获取真实 |