NGINX 1.26.2 配置正向代理并编译安装的完整过程,使用了 ngx_http_proxy_connect_module
模块。
1. 环境准备
1.1 安装依赖
确保系统安装了以下必要的依赖:
bash
sudo yum install -y gcc gcc-c++ make pcre-devel zlib-devel openssl-devel
1.2 下载 NGINX 源码
从 NGINX 官方下载指定版本(1.26.2)的源码:
bash
wget http://nginx.org/download/nginx-1.26.2.tar.gz
解压源码:
bash
tar -zxvf nginx-1.26.2.tar.gz
cd nginx-1.26.2
1.3 下载 ngx_http_proxy_connect_module
模块
下载模块源码:
bash
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
解压模块:
bash
tar -zxvf ngx_http_proxy_connect_module-0.0.7.tar.gz
2. 编译安装 NGINX
2.1 应用模块的补丁
进入 NGINX 源码目录,并应用模块提供的补丁文件:
bash
patch -p1 < ../ngx_http_proxy_connect_module-0.0.7/patch/proxy_connect_rewrite_1018.patch
2.2 配置编译参数
配置编译参数,添加模块路径和相关选项:
bash
./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 编译安装
执行以下命令进行编译和安装:
bash
make
sudo make install
3. 配置正向代理功能
3.1 编辑 NGINX 配置文件
打开 NGINX 配置文件 /etc/nginx/nginx.conf
:
bash
sudo vim /etc/nginx/nginx.conf
在 http
块中添加正向代理配置:
nginx
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 创建必要的缓存目录(可选)
确保缓存目录存在,并设置正确的权限:
bash
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 配置文件的语法是否正确:
bash
sudo /usr/sbin/nginx -t
启动 NGINX
启动 NGINX:
bash
sudo /usr/sbin/nginx
如果 NGINX 已经在运行,重新加载配置:
bash
sudo /usr/sbin/nginx -s reload
4. 验证正向代理功能
4.1 设置代理
在客户端(如浏览器或命令行工具)设置代理服务器地址为:
http://<NGINX服务器IP>:8888
4.2 测试代理连接
使用 curl
验证正向代理是否生效:
bash
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
:bashsudo 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
目录具有读写权限。