基于Apache httpd为windows11搭建代理服务器

文章目录

一.概述

  出于某些原因,我们需要将自己的windows电脑作为网络代理为局域网 内的其他设备做流量代理,那么windows电脑上的一些魔法功能就可以赋能给局域网内其他设备使用(类似于软路由网关 ),选择将windows作为代理服务器,需要在windows主机上安装代理服务,通常有一些软件客户端,如CCproxy,或者Apache httpd,本文介绍Apache httpd的方法。

二.检查电脑系统类型

检查电脑版本是为 32位操作系统 还是 64位操作系统

检查方式如下:1.在桌面找到【我的电脑】图标,右键属性。

三.下载安装Apache Httpd

  下载地址:http://www.apachehaus.com/cgi-bin/download.plx(Apache Haus Downloads

  根据步骤1中电脑的系统位数,选择对应编译好的二进制版本,下载后得到httpd-2.4.25-x64-vc11-r1.zip,解压。

  记住存放路径;例如:C:\AppInstall\Apache24

  注意:如果选择下载的Apache httpd 与操作系统位数不一致,可能会导致无法正常使用。

四.代理服务配置

进入安装的目录:如 C:\AppInstall\Apache24,目录结构如下,这里需要对conf做一些修改,以适配我们当前的配置,首先进入conf 目录,打开httpd.conf文件:

修改处1:进入conf 目录,打开httpd.conf文件进行修改根目录ServerRoot为自己放置Apache24的目录(我的是C:\AppInstall\Apache24),这里不修改启动会报错。

修改处2:Listen端口修改(修改成自己要监听的端口和ip)

Listen 8989


修改处3:ServerName修改为监听的端口(我设置8989)

修改处4:把以下四句前面的【#】去掉。HTTP 、FTP 、HTTPS sites

#LoadModule proxy_module modules/mod_proxy.so

#LoadModule proxy_connect_module modules/mod_proxy_connect.so

#LoadModule proxy_http_module modules/mod_proxy_http.so

#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so


修改处5:在最后添加Proxy配置

bash 复制代码
ProxyRequests   On
<Proxy *>
    Order allow,deny
    Allow from all
# Deny from 127.0.0.1
# Deny from 10.10.10.0/24
</Proxy>

【注意】2.2版本和2.4+版本在配置上有差别

五.代理服务安装

win+R 输入cmd 使用管理员权限打开dos窗口 运行以下命令安装:

bash 复制代码
cd C:\AppInstall\Apache24\bin
httpd -k install

进行安装apache,安装之后可以在 win+R 输入 services.msc进入服务中可以看到apache服务已经安装成功:

以下命令支持对apache的的启动操作:

bash 复制代码
cd C:\AppInstall\Apache24\bin

启动apache 输入:
   httpd -k restart
卸载apache 输入:
   httpd -k uninstall

六.报错解决方法

  如果 Apache启动 报Invalid command 'order', perhaps misspelled or defined by a module not included。

解决方法:

  • 配置文件中,httpd.conf中,把mod_authz_host.so模块注释掉;
  • 把LoadModule authz_host_module modules/mod_authz_host.so 注释取消掉

七.测试是否运行成功

7.1 本机测试

  使用浏览器验证代理是否可以访问:浏览器配置代理,以360浏览器为例,选项-》代理服务器-》代理服务器设置-》,手动配置代理,输入的IP 可为127.0.0.1,也可为局域网地址或专有网络外网地址,端口为步骤3中监听的端口,这里为:8989。

7.2 局域网代理测试

  • 设置火狐浏览器中的代理为192.168.2.130:8989,如果能正常访问***,则代理成功。
  • 设置系统设置中的代理为192.168.2.130:8989,在shell中curl www.***.com,返回结果则成功;
  • 在shell中可使用命令设置(仅在当前shell中生效):
bash 复制代码
export http_proxy=http://192.168.2.130:8989
export https_proxy=https://192.168.2.130:8989

将上面两句命令放在~/.bashrc/etc/profile中,可以分别在当前用户和整个系统中生效。

注意:科学在windows电脑中需开启TUN模式,才能代理所有流量。

八.设置特定ip可访问(阻止其他ip访问)

参考链接:Apache的Order Allow,Deny 详解 - 与时俱进 - 博客园 (cnblogs.com)

httpd.conf中修改最后的设置内容:

bash 复制代码
ProxyRequests   On
<Proxy *>
    Order Deny,Allow
    Allow from 192.168.2.100 192.168.2.200
    Deny from all
# Deny from 127.0.0.1
# Deny from 10.10.10.0/24
</Proxy>

  注意"Deny,Allow"中间只有一个逗号,也只能有一个逗号 ,有空格都会出错;单词的大小写不限。上面设定的含义是先设定"先检查禁止设定,没有禁止的全部允许",而第二句没有Deny,也就是没有禁止访问的设定,直接就是允许所有访问了。这个主要是用来确保或者覆盖上级目录的设置,开放所有内容的访问权。

  apache会按照order决定最后使用哪一条规则,比如下面,虽然第二句deny了所有访问,但由于在order中allow是最后规则,因此还需要看有没有allow规则,于是allow的192.168.2.100和192.168.2.100就被允许了。注意,order决定的"最后"规则非常重要。

  根据上面的规则,在局域网内除了192.168.2.100和192.168.2.100两台机器,其他的ip都别禁止访问代理访问了,对于其他的机器,执行curl www.***.com命令会报如下错误:

而对于允许的192.168.2.100和192.168.2.100两台机器,执行curl www.***.com命令输出如下:

当然,根据上面的规则,你可以任意设置允许或禁止哪些设备通过,配置起来非常简单!

至此,完结撒花!

九.参考文档

相关推荐
草莓熊Lotso15 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
郝学胜-神的一滴1 天前
C++11 工程级应用 06:自己造一个类似Python的Range迭代器
开发语言·c++·windows·python·程序人生·microsoft
LabVIEW开发2 天前
使用 LabVIEW 获取文件的创建日期:从内置函数到 Windows API 封装
网络·windows·labview·labview知识·labview功能·labview程序
xieliyu.2 天前
计算机网络‑IP 协议解析:核心特性总结
网络·笔记·网络协议·学习·tcp/ip·计算机网络
南宫萧幕2 天前
计算机四级网络工程师:操作系统原理与计算机网络 · 综合知识点笔记
网络·笔记·计算机网络
超级码里奥20242 天前
OpenClaw(龙虾[特殊字符])AI 智能体安装教程
windows·node.js
YCOSA20252 天前
雨晨 Windows 11 IoT 企业版 LTSC 26H2 轻装 26300.9278 自用版
windows·物联网
Best-Wishes2 天前
好靶场杯第一届-古法 流量包分析
计算机网络·web安全·安全威胁分析
丈剑走天涯2 天前
基于 Python 3 语法的 PyCharm 练习示例,涵盖列表操作、类型判断及数据清洗等核心知识点
windows·python·pycharm
AxureMost2 天前
Dopamine 3.0.10 音乐播放器
windows