利用Nginx实现反向代理web服务器
字数 1553 2025-08-15 21:30:37

利用Nginx实现反向代理Web服务器 - 详细教学文档

一、Nginx简介

Nginx是一个高性能的Web服务器和反向代理服务器,具有以下优越特性:

  1. 高并发连接:能够处理大量并发连接
  2. 低内存消耗:相比同类产品内存使用更高效
  3. 低成本:开源免费,部署成本低
  4. 简单配置:配置文件结构清晰易懂
  5. Rewrite支持:支持URL重写功能
  6. 健康检查:内置服务器健康检查机制
  7. 带宽优化:有效节省带宽资源
  8. 高稳定性:运行稳定可靠
  9. 热部署:支持不中断服务的情况下更新配置

二、反向代理概念

反向代理是指代理服务器接收Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将结果返回给客户端。此时:

  • 代理的是服务端而非客户端
  • 对外隐藏了真实服务器的信息
  • 主要用于服务器集群分布式部署场景

三、实验环境准备

1. 网络拓扑

  • 客户端:Windows 10系统,IP: 192.168.5.120
  • 服务端:CentOS虚拟机,IP: 192.168.5.100

2. 端口规划

  • Nginx监听端口:8010、8020
  • Apache服务端口:666、888

四、详细配置步骤

1. Apache服务部署

1.1 安装Apache

yum install httpd -y

1.2 创建测试页面

/var/www目录下创建两个测试HTML文件:

第一个测试页面(/var/www/html1/index.html):

<html>
  <body>
    <h1>这是Apache 666端口的测试页面</h1>
  </body>
</html>

第二个测试页面(/var/www/html2/index.html):

<html>
  <body>
    <h1>这是Apache 888端口的测试页面</h1>
  </body>
</html>

1.3 修改Apache配置文件

编辑/etc/httpd/conf/httpd.conf

  1. 添加监听端口:
Listen 666
Listen 888
  1. 在文件末尾添加虚拟主机配置:
<VirtualHost *:666>
    DocumentRoot /var/www/html1
    ServerName localhost
</VirtualHost>

<VirtualHost *:888>
    DocumentRoot /var/www/html2
    ServerName localhost
</VirtualHost>

1.4 重启Apache服务

systemctl restart httpd.service

1.5 测试访问

在浏览器中测试:

  • http://192.168.5.100:666
  • http://192.168.5.100:888

2. Nginx反向代理配置

2.1 安装Nginx

yum install nginx -y

2.2 修改Nginx配置文件

编辑/etc/nginx/nginx.conf,在http段中添加:

server {
    listen 8010;
    server_name localhost;
    
    location / {
        proxy_pass http://localhost:666;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

server {
    listen 8020;
    server_name localhost;
    
    location / {
        proxy_pass http://localhost:888;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

此配置实现:

  • Nginx 8010端口代理Apache 666端口
  • Nginx 8020端口代理Apache 888端口

2.3 重启Nginx服务

systemctl restart nginx.service

3. SELinux配置

为避免Nginx转发出现问题,需要关闭SELinux:

临时关闭:

setenforce 0

永久关闭(修改配置文件):
编辑/etc/selinux/config,设置:

SELINUX=disabled

然后重启系统。

五、测试验证

在客户端(192.168.5.120)浏览器中访问:

  • http://192.168.5.100:8010 应显示666端口的Apache页面
  • http://192.168.5.100:8020 应显示888端口的Apache页面

六、反向代理的优势

  1. 安全防护:隐藏内部服务器信息,作为公网访问入口
  2. 缓存加速:可缓存服务器响应,减轻后端压力
  3. 负载均衡:可扩展为多台后端服务器的负载均衡器
  4. 灵活路由:可根据不同策略路由到不同后端服务

七、常见问题排查

  1. Nginx转发失败

    • 检查SELinux状态
    • 确认后端服务正常运行
    • 检查防火墙设置
  2. 端口冲突

    • 使用netstat -tulnp查看端口占用情况
  3. 配置文件错误

    • 使用nginx -t测试配置文件语法

八、进阶配置建议

  1. 负载均衡:可在proxy_pass中使用upstream定义多个后端服务器
  2. 缓存配置:添加proxy_cache相关指令启用缓存
  3. HTTPS支持:配置SSL证书实现安全传输
  4. 访问控制:通过allow/deny限制访问IP

通过以上详细配置,您已成功使用Nginx实现了反向代理功能,可根据实际需求进一步扩展和优化。

利用Nginx实现反向代理Web服务器 - 详细教学文档 一、Nginx简介 Nginx是一个高性能的Web服务器和反向代理服务器,具有以下优越特性: 高并发连接 :能够处理大量并发连接 低内存消耗 :相比同类产品内存使用更高效 低成本 :开源免费,部署成本低 简单配置 :配置文件结构清晰易懂 Rewrite支持 :支持URL重写功能 健康检查 :内置服务器健康检查机制 带宽优化 :有效节省带宽资源 高稳定性 :运行稳定可靠 热部署 :支持不中断服务的情况下更新配置 二、反向代理概念 反向代理是指代理服务器接收Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将结果返回给客户端。此时: 代理的是服务端而非客户端 对外隐藏了真实服务器的信息 主要用于服务器集群分布式部署场景 三、实验环境准备 1. 网络拓扑 客户端 :Windows 10系统,IP: 192.168.5.120 服务端 :CentOS虚拟机,IP: 192.168.5.100 2. 端口规划 Nginx监听端口:8010、8020 Apache服务端口:666、888 四、详细配置步骤 1. Apache服务部署 1.1 安装Apache 1.2 创建测试页面 在 /var/www 目录下创建两个测试HTML文件: 第一个测试页面(/var/www/html1/index.html): 第二个测试页面(/var/www/html2/index.html): 1.3 修改Apache配置文件 编辑 /etc/httpd/conf/httpd.conf : 添加监听端口: 在文件末尾添加虚拟主机配置: 1.4 重启Apache服务 1.5 测试访问 在浏览器中测试: http://192.168.5.100:666 http://192.168.5.100:888 2. Nginx反向代理配置 2.1 安装Nginx 2.2 修改Nginx配置文件 编辑 /etc/nginx/nginx.conf ,在http段中添加: 此配置实现: Nginx 8010端口代理Apache 666端口 Nginx 8020端口代理Apache 888端口 2.3 重启Nginx服务 3. SELinux配置 为避免Nginx转发出现问题,需要关闭SELinux: 临时关闭: 永久关闭(修改配置文件): 编辑 /etc/selinux/config ,设置: 然后重启系统。 五、测试验证 在客户端(192.168.5.120)浏览器中访问: http://192.168.5.100:8010 应显示666端口的Apache页面 http://192.168.5.100:8020 应显示888端口的Apache页面 六、反向代理的优势 安全防护 :隐藏内部服务器信息,作为公网访问入口 缓存加速 :可缓存服务器响应,减轻后端压力 负载均衡 :可扩展为多台后端服务器的负载均衡器 灵活路由 :可根据不同策略路由到不同后端服务 七、常见问题排查 Nginx转发失败 : 检查SELinux状态 确认后端服务正常运行 检查防火墙设置 端口冲突 : 使用 netstat -tulnp 查看端口占用情况 配置文件错误 : 使用 nginx -t 测试配置文件语法 八、进阶配置建议 负载均衡 :可在proxy_ pass中使用upstream定义多个后端服务器 缓存配置 :添加proxy_ cache相关指令启用缓存 HTTPS支持 :配置SSL证书实现安全传输 访问控制 :通过allow/deny限制访问IP 通过以上详细配置,您已成功使用Nginx实现了反向代理功能,可根据实际需求进一步扩展和优化。