前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx 正向代理 http、https(openEuler)

Nginx 正向代理 http、https(openEuler)

作者头像
Kevin song
发布2024-03-21 15:00:35
1730
发布2024-03-21 15:00:35
举报

Nginx 正向代理

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

Nginx官网

http://nginx.org/en/download.html

  • 主线版本:“Mainline version”,主线版本通常是最新的版本,主线版通常会加入一些最新的功能。
  • 稳定版本:“Stable version”,稳定版通常是由主线版发展而来的,稳定版通常是经过官方测试的,是官方认为相对稳定的版本,生产环境中通常会使用稳定版。
  • 历史版本:“Legacy version”,当新的稳定版出现,那么原先的稳定版就会被归类到"历史版本"中去。

ngx_http_proxy_connect_module 模块

https://github.com/chobits/ngx_http_proxy_connect_module

nginx 版本对应patch补丁包

软件包依赖

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

ngx_http_proxy_connect_module 源码压缩包

代码语言:javascript
复制
unzip ngx_http_proxy_connect_module-master.zip 
mv ngx_http_proxy_connect_module-master /opt/ngx_http_proxy_connect_module

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

代码语言:javascript
复制
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)

make 执行完成在objs目录下生成一个nginx执行文件

代码语言:javascript
复制
cd /opt/nginx-1.21.5/objs/
./nginx -V

nginx执行文件替换,并重启服务

代码语言:javascript
复制
cp /opt/nginx-1.21.5/objs/nginx /usr/sbin/nginx 
systemctl   restart  nginx

nginx 配置文件

/etc/nginx/conf.d/httpproxy.conf

代码语言:javascript
复制
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;

        }
}

重启nginx服务

代码语言:javascript
复制
systemctl restart nginx

检查nginx配置文件

代码语言:javascript
复制
nginx  -t

生效配置

代码语言:javascript
复制
nginx -s reload

查看监听端口

代码语言:javascript
复制
netstat -auntlp |grep 8443

Firewall 防火墙

代码语言:javascript
复制
firewall-cmd  --add-port=8443/tcp --permanent
firewall-cmd  --reload

测试代理响应

代码语言:javascript
复制
curl -I --proxy localhost:8443 http://nginx.org
curl -I --proxy localhost:8443 https://www.baidu.com

Linux 客户端配置

vim /etc/profile

代码语言:javascript
复制
export http_proxy=http://192.168.99.107:8443
export https_proxy=http://192.168.99.107:8443

全局代理

代码语言:javascript
复制
export ALL_PROXY='192.168.99.107:8443'

重载配置文件

代码语言:javascript
复制
source /etc/profile

正向代理账户认证

创建密码文件

代码语言:javascript
复制
htpasswd -c -d /etc/nginx/.passwd username

nginx 配置文件

代码语言:javascript
复制
location /proxy-auth {
        auth_basic "secret";
        auth_basic_user_file  "/etc/nginx/.passwd";
       }

重载配置文件

代码语言:javascript
复制
nginx -s reload

账户认证测试

代码语言:javascript
复制
curl -I --proxy localhost:8443 http://nginx.org -U username:passwd

uos-desktop-20e 桌面代理设置

控制中心--网络--系统代理

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • uos-desktop-20e 桌面代理设置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档