openEuler 欧拉系统nginx正向代理 http https —— 筑梦之路

正向代理

Nginx正向代理,通过服务器代理客户端去重定向请求访问到目标服务器的一种代理服务。对于目标服务器来说浏览器/客户端是隐藏的。Nginx 正向代理默认只支持http 协议,不支持 https 协议,需借助"ngx_http_proxy_connect_module"模块实现https 正向代理。

GitHub - chobits/ngx_http_proxy_connect_module: A forward proxy module for CONNECT request handling

准备编译安装环境

bash 复制代码
dnf  install  libxml2 libxml2-devel libxslt-devel  gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel  patch perl-ExtUtils-Embed gd-devel geoip-devel gperftools gperftools-devel

nginx添加ngx_http_proxy_connect_module模块并重新编译nginx

bash 复制代码
wget -P /opt http://nginx.org/download/nginx-1.21.5.tar.gz

tar -xzvf /opt/nginx-1.21.5.tar.gz

cd /opt/nginx-1.21.5

patch -p1 <  /opt/ngx_http_proxy_connect_module-master/patch/proxy_connect_rewrite_102101.patch 

./configure --add-module=/opt/ngx_http_proxy_connect_module

make -j8 && make install
  • patch命令的用法,-p1 : 1代表跳过的层级数字

执行make & make install进行编译及安装(注意:如果已经yum/dnf安装nginx,执行make 后不要执行 make install)

配置文件示例

bash 复制代码
server {
       listen 8443;
       resolver  223.5.5.5 114.114.114.114 valid=300s;
       resolver_timeout 10s;
       #server_name localhost;
       proxy_connect;
       proxy_connect_allow 443 80;
       proxy_connect_connect_timeout 10s;
       proxy_connect_read_timeout 10s;
       proxy_connect_send_timeout 10s;

       location / {
        proxy_set_header Host $host;
        proxy_pass $scheme://$http_host$request_uri;
        proxy_buffers 256 4k;
        proxy_max_temp_file_size 0k;
        proxy_connect_timeout 30;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
        proxy_next_upstream error timeout invalid_header http_502;

        }
}

测试代理

bash 复制代码
# 本机上测试

curl -I --proxy localhost:8443 http://nginx.org
curl -I --proxy localhost:8443 https://www.baidu.com
bash 复制代码
# linux客户端上测试

vim /etc/profile

export http_proxy=http://192.168.199.107:8443
export https_proxy=http://192.168.199.107:8443

# 全局代理

export ALL_PROXY='192.168.99.107:8443'

正向代理账户认证

bash 复制代码
htpasswd -c -d /etc/nginx/.passwd username


location /proxy-auth {
        auth_basic "secret";
        auth_basic_user_file  "/etc/nginx/.passwd";
 }



curl -I --proxy localhost:8443 http://nginx.org -U username:passwd
相关推荐
IT成长日记1 小时前
【Nginx开荒攻略】Nginx虚拟主机配置:从域名、端口到IP的完整指南
linux·运维·服务器·nginx·虚拟主机
爱吃小胖橘7 小时前
Unity网络开发--超文本传输协议Http(1)
开发语言·网络·网络协议·http·c#·游戏引擎
杰瑞学AI11 小时前
我的全栈学习之旅:FastAPI (持续更新!!!)
后端·python·websocket·学习·http·restful·fastapi
西贝爱学习14 小时前
【软件】nginx-1.28.0安装包(Windows版)
运维·nginx
zrande15 小时前
Nginx 负载均衡通用方案
nginx·负载均衡
游戏开发爱好者816 小时前
BShare HTTPS 集成与排查实战,从 SDK 接入到 iOS 真机调试(bshare https、签名、回调、抓包)
android·ios·小程序·https·uni-app·iphone·webview
2501_9151063219 小时前
苹果软件加固与 iOS App 混淆完整指南,IPA 文件加密、无源码混淆与代码保护实战
android·ios·小程序·https·uni-app·iphone·webview
2501_916013741 天前
iOS 推送开发完整指南,APNs 配置、证书申请、远程推送实现与上架调试经验分享
android·ios·小程序·https·uni-app·iphone·webview
2501_915909061 天前
HTML5 与 HTTPS,页面能力、必要性、常见问题与实战排查
前端·ios·小程序·https·uni-app·iphone·html5
小灰灰的可爱无人可替代1 天前
记录一次使用docker和docker-compose更新vue前端项目问题
nginx·docker·vue