当前位置: 代码网 > 服务器>网络>https > 使用Nginx搭建代理服务器(正向代理HTTPS网站)的操作指南

使用Nginx搭建代理服务器(正向代理HTTPS网站)的操作指南

2024年11月20日 https 我要评论
一、正向代理与反向代理的区别1.1 正向代理正向代理位于客户端和服务器之间,代表客户端向服务器发起请求。其主要功能是隐藏客户端信息,代理客户端进行网络访问,尤其是访问某些受限资源时。1.2 反向代理反

一、正向代理与反向代理的区别

1.1 正向代理

正向代理位于客户端和服务器之间,代表客户端向服务器发起请求。其主要功能是隐藏客户端信息,代理客户端进行网络访问,尤其是访问某些受限资源时。

1.2 反向代理

反向代理位于服务器端,接收来自客户端的请求,然后转发给内部的服务器处理。其主要功能是隐藏服务器信息,在负载均衡、缓存等方面应用广泛。

二、环境准备

  • nginx:我们将使用 nginx 作为代理服务器。nginx 是一个高效的反向代理服务器,也可以充当正向代理服务器。
  • 操作系统:本文以 ubuntu 为例进行演示。
  • ssl 证书:nginx 支持 https 代理,因此需要处理 ssl/tls。

2.1 安装 nginx

在 ubuntu 系统中,nginx 可以通过 apt 包管理器安装:

sudo apt update
sudo apt install nginx

安装完成后,可以通过以下命令启动 nginx:

sudo systemctl start nginx

2.2 验证 nginx 安装

通过访问 http://<你的服务器 ip>,若能看到 nginx 欢迎页面,说明安装成功。

三、nginx 配置正向代理服务器

nginx 默认情况下是作为反向代理服务器使用的。为了让其充当正向代理,我们需要通过配置文件进行修改。

3.1 配置文件路径

nginx 的默认配置文件位于 /etc/nginx/nginx.conf,我们可以在该文件中添加代理配置。

sudo nano /etc/nginx/nginx.conf

3.2 启用 http 正向代理

在 nginx 配置中,新增代理服务器相关的配置。以下是一个配置正向代理的代码示例:

http {
    server {
        listen 8888;  # 代理服务器监听端口
        resolver 8.8.8.8;  # dns 解析器
        location / {
            proxy_pass $scheme://$host$request_uri;  # 转发请求
            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;

            # 代理连接超时设置
            proxy_connect_timeout 60;
            proxy_send_timeout 60;
            proxy_read_timeout 60;
        }
    }
}

说明:

  • listen 8888;:代理服务器监听的端口号,客户端需要通过该端口访问代理服务器。
  • resolver 8.8.8.8;:使用 google 的公共 dns 服务器进行域名解析。
  • proxy_pass $scheme://$host$request_uri;:通过代理服务器将请求转发给目标服务器。
  • proxy_set_header:设置请求头,传递客户端的原始信息。

保存并退出配置文件后,重启 nginx 使配置生效:

sudo systemctl restart nginx

3.3 测试 http 正向代理

在配置好正向代理服务器后,可以通过以下方式在本地测试 http 请求:

使用 curl 测试

curl -x http://<你的服务器ip>:8888 https://www.example.com

-x 参数表示使用代理服务器访问目标网站。若能成功返回目标网站的内容,则正向代理配置成功。

四、配置 https 正向代理

4.1 添加 https 支持

由于 https 传输数据是加密的,nginx 需要通过 connect 方法来代理 https 请求。我们可以在 nginx 的配置文件中加入以下代码以支持 https。

修改 /etc/nginx/nginx.conf 文件,新增以下内容:

server {
    listen 8888;  # 监听端口
    
    resolver 8.8.8.8 valid=300s;
    resolver_timeout 10s;

    # 配置代理 connect 请求
    location / {
        proxy_pass $scheme://$host$request_uri;
        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;

        # 代理 https 请求的 connect 方法
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;

        proxy_http_version 1.1;
        proxy_set_header connection "";

        # 允许 connect 请求
        if ($request_method = connect) {
            proxy_pass http://$host:443;
        }
    }
}

解释:

  • proxy_http_version 1.1;:使用 http 1.1,支持长连接。
  • proxy_pass http://$host:443;:针对 https 的 connect 请求,转发到目标主机的 443 端口(https)。

4.2 重新启动 nginx

保存配置文件后,使用以下命令重新启动 nginx:

sudo systemctl restart nginx

4.3 测试 https 正向代理

使用 curl 测试代理 https 网站请求:

curl -x http://<你的服务器ip>:8888 https://www.example.com

如果能正确返回 www.example.com 的内容,则说明 https 正向代理配置成功。

五、代理日志与错误排查

在代理配置过程中,查看 nginx 日志是排查问题的重要手段。默认情况下,日志文件存放在 /var/log/nginx/access.log 和 /var/log/nginx/error.log。

# 查看访问日志
tail -f /var/log/nginx/access.log

# 查看错误日志
tail -f /var/log/nginx/error.log

六、代理服务器的优化

正向代理服务器可能需要处理大量的客户端请求,因此在生产环境下可以对 nginx 进行一些优化配置。

6.1 设置代理缓存

可以启用 nginx 的缓存功能来减轻目标服务器的压力:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;

server {
    location / {
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
        proxy_pass $scheme://$host$request_uri;
    }
}

6.2 增加并发请求数量

nginx 的默认并发连接数限制较低,可以通过以下方式调整:

worker_processes auto;
events {
    worker_connections 10240;
}

七、总结

本文介绍了如何使用 nginx 搭建正向代理服务器,支持 http 和 https 网站代理,并提供了详细的代码和配置示例。通过本文的学习,您可以掌握搭建正向代理的基础知识,并能在实际项目中应用。

代理服务器是一种非常强大的工具,能够帮助我们隐藏客户端信息、绕过 ip 限制等。合理的配置和优化可以提升代理服务器的性能,从而满足实际应用中的需求。

以上就是使用nginx搭建代理服务器(正向代理https网站)的操作指南的详细内容,更多关于nginx搭建代理服务器的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com