编辑
2024-08-30
TechNotes
00

目录

前言
1. 使用 Nginx 作为反向代理
2. 使用 Apache 作为反向代理
3. 使用 iptables 进行端口转发
总结

前言

在部署我自己编写的Django项目时, 由于我在windows下编写代码时启动端口都为8000, 但是在部署项目时, 需要让外界使用80端口直接访问, 因此总结出以下三种方法实现
由于我的项目使用了websocket对于访问的端口十分敏感, 实际部署中使用的是iptables端口转发

1. 使用 Nginx 作为反向代理

Nginx 是一种流行的高性能 Web 服务器和反向代理服务器,可以将请求从一个端口转发到另一个端口。它不仅支持简单的端口转发,还提供了丰富的功能,如 WebSocket 支持、负载均衡、SSL/TLS 加密等。

步骤:

  1. 安装 Nginx

    • CentOS: sudo yum install nginx
    • Ubuntu: sudo apt-get install nginx
  2. 配置 Nginx: 创建或编辑配置文件 /etc/nginx/conf.d/your_app.conf,添加以下内容:

    nginx
    server { listen 80; server_name 156.238.236.88; location / { proxy_pass http://127.0.0.1:8000; 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; } }
  3. 启动或重新加载 Nginx

    bash
    sudo systemctl start nginx # 启动 Nginx sudo systemctl reload nginx # 重新加载配置

优点

  • 支持 WebSocket 连接。
  • 提供负载均衡、缓存、SSL/TLS 支持。
  • 可以进行复杂的请求路由和重写。

缺点

  • 配置相对复杂。
  • 需要额外的服务器资源。

2. 使用 Apache 作为反向代理

Apache HTTP Server 也是一种强大的 Web 服务器,可以通过 mod_proxy 模块进行端口转发。

步骤:

  1. 安装 Apache

    • CentOS: sudo yum install httpd
    • Ubuntu: sudo apt-get install apache2
  2. 启用必要的模块

    bash
    sudo a2enmod proxy sudo a2enmod proxy_http
  3. 配置 Apache: 编辑配置文件 /etc/httpd/conf/httpd.conf(CentOS)或 /etc/apache2/sites-available/000-default.conf(Ubuntu),添加以下内容:

    apache
    <VirtualHost *:80> ServerName 156.238.236.88 ProxyPreserveHost On ProxyPass / http://127.0.0.1:8000/ ProxyPassReverse / http://127.0.0.1:8000/ </VirtualHost>
  4. 启动或重新加载 Apache

    bash
    sudo systemctl start httpd # CentOS sudo systemctl start apache2 # Ubuntu sudo systemctl reload httpd # CentOS sudo systemctl reload apache2 # Ubuntu

优点

  • 支持 WebSocket 连接。
  • 提供负载均衡、SSL/TLS 支持。
  • 功能丰富,可扩展性强。

缺点

  • 配置复杂度较高。
  • 需要更多的服务器资源。

3. 使用 iptables 进行端口转发

iptables 是 Linux 系统中的一个强大的工具,可以进行简单的端口转发。它适用于基本的流量转发,但对于 WebSocket 和更复杂的场景支持有限。

步骤:

  1. 配置端口转发

    bash
    sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8000
  2. 保存配置(CentOS):

    bash
    sudo service iptables save

    Ubuntu 安装 iptables-persistent 保存配置:

    bash
    sudo apt-get install iptables-persistent

优点

  • 配置简单直接。
  • 适用于基本的端口转发需求。

缺点

  • 不支持 WebSocket 连接。
  • 功能较为单一,仅适用于基本的端口转发。

总结

  • NginxApache 作为反向代理服务器能够提供更多的功能,如 WebSocket 支持、负载均衡和 SSL/TLS 加密,非常适合复杂的应用场景。
  • iptables 适用于基本的端口转发需求,但在处理 WebSocket 和高级功能时存在局限性。

选择适合的方法取决于你的具体需求和环境。对于需要更多功能和灵活性的场景,推荐使用 Nginx 或 Apache 作为反向代理;对于简单的端口转发,iptables 是一个简单而有效的选择。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:GYC

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!