准确-NGINX 1.26.2配置正向代理并编译安装的完整过程

NGINX 1.26.2 配置正向代理并编译安装的完整过程,使用了 ngx_http_proxy_connect_module 模块。


1. 环境准备

1.1 安装依赖

确保系统安装了以下必要的依赖:

复制代码
sudo yum install -y gcc gcc-c++ make pcre-devel zlib-devel openssl-devel
1.2 下载 NGINX 源码

从 NGINX 官方下载指定版本(1.26.2)的源码:

复制代码
wget http://nginx.org/download/nginx-1.26.2.tar.gz

解压源码:

复制代码
tar -zxvf nginx-1.26.2.tar.gz
cd nginx-1.26.2
1.3 下载 ngx_http_proxy_connect_module 模块

下载模块源码:

复制代码
wget https://codeload.github.com/chobits/ngx_http_proxy_connect_module/tar.gz/refs/tags/ngx_http_proxy_connect_module-0.0.7.tar.gz

解压模块:

复制代码
tar -zxvf ngx_http_proxy_connect_module-0.0.7.tar.gz

2. 编译安装 NGINX

2.1 应用模块的补丁

进入 NGINX 源码目录,并应用模块提供的补丁文件:

复制代码
patch -p1 < ../ngx_http_proxy_connect_module-0.0.7/patch/proxy_connect_rewrite_1018.patch
2.2 配置编译参数

配置编译参数,添加模块路径和相关选项:

复制代码
./configure 
    --prefix=/usr/local/nginx 
    --sbin-path=/usr/sbin/nginx 
    --conf-path=/etc/nginx/nginx.conf 
    --error-log-path=/var/log/nginx/error.log 
    --http-log-path=/var/log/nginx/access.log 
    --pid-path=/var/run/nginx.pid 
    --lock-path=/var/run/nginx.lock 
    --http-client-body-temp-path=/var/cache/nginx/client_temp 
    --http-proxy-temp-path=/var/cache/nginx/proxy_temp 
    --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp 
    --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 
    --http-scgi-temp-path=/var/cache/nginx/scgi_temp 
    --with-http_ssl_module 
    --with-http_v2_module 
    --with-http_stub_status_module 
    --with-http_realip_module 
    --with-stream 
    --with-stream_realip_module 
    --with-stream_ssl_module 
    --with-stream_ssl_preread_module 
    --with-threads 
    --add-module=../ngx_http_proxy_connect_module-0.0.7
2.3 编译安装

执行以下命令进行编译和安装:

复制代码
make
sudo make install

3. 配置正向代理功能

3.1 编辑 NGINX 配置文件

打开 NGINX 配置文件 /etc/nginx/nginx.conf:

复制代码
sudo vim /etc/nginx/nginx.conf

在 http 块中添加正向代理配置:

复制代码
server {
    listen 8888;  # 监听代理端口
    server_name localhost;  # 服务器名称

    resolver 114.114.114.114 ipv6=off;  # DNS 解析器设置

    proxy_connect;  # 启用正向代理模块
    proxy_connect_allow 443 80;  # 允许代理的端口
    proxy_connect_connect_timeout 10s;  # 连接超时
    proxy_connect_read_timeout 10s;  # 读取超时

    location / {
        proxy_pass $scheme://$http_host$request_uri;  # 转发请求到目标地址
    }
}

3.2 创建必要的缓存目录(可选)

确保缓存目录存在,并设置正确的权限:

复制代码
sudo mkdir -p /var/cache/nginx/client_temp
sudo chown -R nobody:nobody /var/cache/nginx
sudo chmod -R 755 /var/cache/nginx

3.3 测试并启动 NGINX
测试配置

检查 NGINX 配置文件的语法是否正确:

复制代码
sudo /usr/sbin/nginx -t
启动 NGINX

启动 NGINX:

复制代码
sudo /usr/sbin/nginx

如果 NGINX 已经在运行,重新加载配置:

复制代码
sudo /usr/sbin/nginx -s reload

4. 验证正向代理功能

4.1 设置代理

在客户端(如浏览器或命令行工具)设置代理服务器地址为:

复制代码
http://<NGINX服务器IP>:8888
4.2 测试代理连接

使用 curl 验证正向代理是否生效:

复制代码
curl -x http://<NGINX服务器IP>:8888 http://www.example.com
4.3 查看日志
  • 访问日志 :/var/log/nginx/access.log
  • 错误日志 :/var/log/nginx/error.log

5. 常见问题

5.1 代理连接失败
  • 检查防火墙是否阻止了端口 8888:

    复制代码
    sudo firewall-cmd --add-port=8888/tcp --permanent
    sudo firewall-cmd --reload
5.2 模块未生效
  • 确保在编译时正确加载了 ngx_http_proxy_connect_module 模块,并启用了 proxy_connect 指令。
5.3 权限问题
  • 确保 NGINX 运行用户(如 nobody)对 /var/cache/nginx 目录具有读写权限。

相关推荐
AR-26710-3 小时前
Linux Day31——实操启停服务改端口重启
linux·运维
百度Geek说3 小时前
QCon上海2026:百度 SRE Agent 规模化落地实践解读
运维·自动化运维
叼烟扛炮4 小时前
Linux 学习笔记(五十八):IO 多路复用封神——epoll 底层原理揭秘
linux·运维·服务器·网络·笔记·学习·php
分布式存储与RustFS6 小时前
给 RustFS 桶加一层内存缓存:用 Alluxio 让热数据少跑一遍网络
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
Decay__8 小时前
22_MySQL 运维自动化平台 —— 部署编排 + 监控 + 巡检 + 告警 + 工单闭环一体化
运维·数据库·sql·mysql·架构
迪康coolmu9 小时前
企业U盘管控落地实战:基于迪康端点安全一体化管理系统的移动存储安全实践
运维·人工智能·经验分享·笔记·安全·电脑
Decay__9 小时前
21_MySQL 优化案例集 —— 慢 SQL 优化、索引重构与参数调整收益对比
运维·数据库·sql·mysql·架构
此生决int10 小时前
Linux系列(08)——进程控制
linux·运维·驱动开发