💓 博客主页:瑕疵的CSDN主页
📝 Gitee主页:瑕疵的gitee主页
⏩ 文章专栏:《热点资讯》
使用Nginx作为反向代理和负载均衡器
- 引言
- Nginx 简介
- 安装 Nginx
- Ubuntu
- CentOS
- 配置 Nginx 作为反向代理
- 配置 Nginx 作为负载均衡器
- 高级配置
- 会话持久性
- 健康检查
- 监控和日志
- 总结
sudo apt update
sudo apt install nginx
<div class="cl-preview-section"><h4><a id="4_19"></a>CentOS</h4></div>```bash
sudo yum install epel-release
sudo yum install nginx
反向代理是一种服务器,它位于客户端和后端服务器之间,客户端发送的请求首先到达反向代理服务器,然后由反向代理服务器转发到后端服务器。Nginx 可以非常方便地配置为反向代理。
假设我们有一个后端服务运行在 127.0.0.1:5000
,我们希望 Nginx 将所有请求转发到这个地址。
编辑 Nginx 配置文件:
通常,Nginx 的主配置文件位于/etc/nginx/nginx.conf
,而站点配置文件位于/etc/nginx/sites-available/default
。我们可以编辑default
文件来配置反向代理。server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:5000; 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; } }
测试配置文件:
在重新加载 Nginx 之前,最好先测试配置文件是否正确。sudo nginx -t
重新加载 Nginx:
如果配置文件没有错误,可以重新加载 Nginx 以应用更改。sudo systemctl reload nginx
假设我们有两个后端服务分别运行在 127.0.0.1:5000
和 127.0.0.1:5001
,我们希望 Nginx 将请求均匀分发到这两个服务。
编辑 Nginx 配置文件:
在default
文件中添加一个upstream
块来定义后端服务器池。upstream backend { server 127.0.0.1:5000; server 127.0.0.1:5001; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; 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 nginx -t
重新加载 Nginx:
如果配置文件没有错误,可以重新加载 Nginx 以应用更改。sudo systemctl reload nginx
upstream backend {
ip_hash;
server 127.0.0.1:5000;
server 127.0.0.1:5001;
}
Nginx 可以配置健康检查,自动检测后端服务器的状态,并在服务器不可用时将其从负载均衡池中移除。
upstream backend {
server 127.0.0.1:5000;
server 127.0.0.1:5001;
health_check;
}
Nginx 提供了详细的日志功能,可以帮助我们监控服务器的性能和状态。
访问日志:
访问日志记录了每个请求的详细信息。access_log /var/log/nginx/access.log;
错误日志:
错误日志记录了 Nginx 运行过程中遇到的错误。error_log /var/log/nginx/error.log;
Nginx 作为反向代理和负载均衡器,能够显著提高系统的可用性和性能。