基于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命令输出如下:

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

至此,完结撒花!

九.参考文档

相关推荐
plmm烟酒僧1 小时前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
小钱c73 小时前
Mac下安装Apache JMeter并启动
jmeter·macos·apache
Jtti4 小时前
Windows系统服务器怎么设置远程连接?详细步骤
运维·服务器·windows
爱吃生蚝的于勒4 小时前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
小奥超人4 小时前
PPT文件设置了修改权限,如何取消权?
windows·经验分享·microsoft·ppt·办公技巧
城南vision5 小时前
计算机网络——HTTP篇
网络协议·计算机网络·http
幺零九零零11 小时前
【计算机网络】TCP协议面试常考(一)
服务器·tcp/ip·计算机网络
hairenjing112314 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
九鼎科技-Leo15 小时前
了解 .NET 运行时与 .NET 框架:基础概念与相互关系
windows·c#·.net
长安初雪15 小时前
Request 和 Response 万字详解
计算机网络·servlet