首页 > 系统相关 >用nginx正向代理,让内网主机通过外网主机访问外网

用nginx正向代理,让内网主机通过外网主机访问外网

时间:2024-12-14 22:44:10浏览次数:4  
标签:http 主机 代理 server nginx connect 内网 proxy

需求1:某几个ip的代理

server {
         listen 9000;    # 监听端口
         server_name localhost;
        
        set $url "proxy_server_doman_or_ip";    # 设置代理的域名或IP变量,这里替换成自己需要代理的网站
         location / {
             proxy_pass http://$url:8082;    # 将请求转发到由 $url 变量表示的地址。
         }
    }

需求2:域名网站的代理

server {
         listen 9000;    # 监听端口
         server_name localhost;

        # 设置DNS解析器的地址为8.8.8.8,并且设置了解析器的缓存时间为300秒(这样每隔300s就会重新解析一次)。ipv6=off 是关闭IPv6的解析支持。
        resolver 8.8.8.8 valid=300 ipv6=off; 
        resolver_timeout 3s;    # 设置解析DNS的超时时间为3秒
        
        proxy_read_timeout 60s;
        proxy_send_timeout 60s;
        proxy_connect_timeout 60s;
        
        set $url "proxy_server_doman_or_ip";    # 设置代理的域名或IP变量,这里替换成自己需要代理的网站
         location / {
            proxy_pass http://$url:9000;    # 将请求转发到由 $url 变量表示的地址。9000是目标网站的端口。
            
            proxy_buffers 256 4K;        # 设置用于缓存后端响应的缓冲区大小为256个,每个大小为4K。
            proxy_max_temp_file_size 0;        # 设置Nginx暂存响应数据的最大临时文件大小为0,即不使用临时文件。
            proxy_cache_valid 200 302 1m;     # 针对状态码为200和302的响应,设置缓存有效期为1分钟。
            proxy_cache_valid 301 1h;        # 针对状态码为301的响应,设置缓存有效期为1小时。
            proxy_cache_valid any 1m;    # 对于其他任何响应状态码,设置缓存有效期为1分钟。
         }
    }

需求3:所有网站的代理

server {
    # 服务器监听的端口号为8080
    listen                           8080;
 
    # 服务器名称为localhost
    server_name                      localhost;
 
    # 指定DNS服务器地址为114.114.114.114,禁用IPv6解析
    resolver                         114.114.114.114 ipv6=off;
 
    # 开启HTTP CONNECT方法支持,用于建立与后端服务器的TCP连接
    proxy_connect;
 
    # 允许通过代理的端口,这里允许443和80端口
    proxy_connect_allow              443 80;
 
    # 建立连接的超时时间为10秒
    proxy_connect_connect_timeout    10s;
 
    # 读取数据的超时时间为10秒
    proxy_connect_read_timeout       10s;
 
    location / {
        # 将请求转发到代理目标
        proxy_pass $scheme://$http_host$request_uri;
    }

代理验证:

 curl -I https://blog.csdn.net/ -v -x 127.0.0.1:8080

如图 出现"HTTP/1.1 200 Connection Established" 表示代理服务器已经成功建立了连接

 安装nginx默认不支持https,需要额外添加模块ngx_http_proxy_connect_module。需确保模块和Nginx版本匹配。

#安装patch:
yum install patch -y

cd /root
wget http://nginx.org/download/nginx-1.20.2.tar.gz

#解压
tar xf nginx-1.20.2.tar.gz 
 
#进入nginx目录
cd nginx-1.20.2/
 
#使用patch命令导入补丁 注意路径是否一致 我是直接在根目录操作的
patch -p1 < /root/ngx_http_proxy_connect_module-0.0.2/patch/proxy_connect_rewrite_1018.patch
 

下面安装nginx

#安装编译工具和库 
yum install gcc cmake make cmake unzip ncurses-devel gcc gcc-c++ -y
 
#配置Nginx编译选项,使其在编译Nginx时包含ngx_http_proxy_connect_module-0.0.2模块
./configure --prefix=/usr/local/nginx --add-module=/root/ngx_http_proxy_connect_module-0.0.2
 
#编译和安装Nginx
make && make install

windows服务器代理配置

linux代理服务器设置

vi /etc/profile
 
#编辑/etc/profile文件 在最后一行加入
 
export http_proxy=192.168.0.97:8080
export https_proxy=192.168.0.97:8080
export ftp_proxy=192.168.0.97:8080
 
#192.168.0.97:8080 为你的代理服务器ip和端口

使用source命令使其生效

source /etc/profile

 

标签:http,主机,代理,server,nginx,connect,内网,proxy
From: https://www.cnblogs.com/tiandi/p/18607362

相关文章

  • nginx 简介+应用
    文章目录nginx简介nginx二级目录处理二级目录实例列举1.第一个`location/`块2.第二个`location~^/(ui)`块3.第三个`location/api`块第一个`location/`与第二个`location~^/(ui)`是否重复nginx前端部署iframe嵌套配置设置后端服务转发实例......
  • Keepalived-Nginx实现高可用
    master机器配置文件:======================================================================!ConfigurationFileforkeepalived#全局配置global_defs{#路由ID,不能重复,通常为hostnamerouter_idmaster}#keepalived会定时执行脚本并对脚本执行的结果进行分析,动态......
  • docker搭建nginx-php环境
    首先,创建一个Dockerfile文件,内容如下:FROMphp:7.4-fpmRUNsed-i's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g'/etc/apt/sources.listRUNsed-i's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g'/etc/apt/sources.list#安装NginxRUNapt-ge......
  • VMware的三种网络模式——在NAT模式下开放接口为局域网内其他主机提供服务
    众所周知VMware有三种常用的网络通讯模式,分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式),它们各有不同的用法。Bridged桥接模式是与主机使用同一网段的IP,能够直接使用主机的网卡,连接互联网与局域网。NAT转换模式是通过网络适配器进行IP转换,能够通过VMnet8......
  • Linux修改IP、主机名、DNS
    在Linux系统中,更改IP地址、主机名和DNS设置通常涉及到几个关键的配置文件和命令。具体步骤会根据你的Linux发行版有所不同,但这里我将以常见的CentOS/RHEL系统为例,说明这些操作的一般流程。1.更改IP地址检查当前的网络接口:ipaddrshow找到你要修改的网络接口配置文件。在......
  • python 查看内网所有设备的ip
    作为一个网工我们要知道内网有多少设备连接和ip,我们可以通过python脚本简单的完成。这里我的python环境为python3.13下图是一个大概的运行成果以下是整个代码复制即用。importosimportsubprocessimportplatformimportthreadingimporttimefromconcurrent.futur......
  • nginx reload时对http keepalive连接的处理
    现象nginx在reload时,会对httpkeepalive的连接进行close操作。抓包可以看见client收到了一个fin报文。 nginx的worker也不会长时间留着shutdown状态,而是立刻退出。 4层的tcp监听上的连接,会使worker一直保留在shutdown状态。直到连接断开后,进程退出。代码分析一见函数......
  • nginx-docker.yml
    version:'3'services:nginx:image:nginx:latestcontainer_name:nginx1restart:alwaysports:-"80:80"-"7080:7080"-"1180:1180"volumes:-/usr/local/nginx/html:/usr/share/ng......
  • 云主机安装Redis,基于CodeArts模拟电商平台秒杀抢购
    本文分享自华为云社区《云主机安装Redis并模拟电商平台秒杀抢购场景》,作者:开发者空间小蜜蜂。1.1案例介绍Redis是一个高性能的key-value数据库。Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘......
  • 利用自己的公网服务器IP远程访问内网的服务
    一.概述本文将讲解如何利用自己的公网服务器IP访问自己远程的内网服务(windows远程桌面:3389)本文适用于自己拥有公网服务器的用户,本文已远程桌面举例二.步骤1.开启防火墙例如我在阿里云上有一台公网云服务器,首先阿里云网站后台开启防火墙,你需要开放啥端口就去开放啥端口.......