在windows配置Apache httpd代理服务器

时间:2024-04-07 22:32:30

Apache httpd 代理服务搭建

 

简介:使用Apache httpd来搭建代理服务是因为其免费,开源,可控性较高,文档较全。本文是以windows系统来代理服务器,linux客户端使用此代理服务。若是想windows使用其服务,比如浏览器使用直接配置浏览器的网络配置为代理即可。

 

一. 下载安装

下载地址:https://www.apachehaus.com/cgi-bin/download.plx

下载最新的适合自己的windows系统版本即可,我目前安装的版本为

httpd-2.4.29

在windows配置Apache httpd代理服务器

下载后解压

在windows配置Apache httpd代理服务器

 

二. 配置代理信息

打开配置文件Apache24/conf/httpd.conf: 

38-39行修改根目录为自己放置Apache24的目录,这里不修改启动会报错

Define SRVROOT"C:/Users/lijianguo/Downloads/httpd-2.4.29-o102n-x64-vc14-r2/Apache24"

ServerRoot"${SRVROOT}"

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

Listen172.16.56.45:9001

加载所需的模块

LoadModuleaccess_compat_module modules/mod_access_compat.so

LoadModulelbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so

LoadModulelbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

LoadModulelbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so

LoadModulelbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so

LoadModuleproxy_module modules/mod_proxy.so

LoadModuleproxy_connect_module modules/mod_proxy_connect.so

LoadModuleproxy_ftp_module modules/mod_proxy_ftp.so

LoadModuleproxy_html_module modules/mod_proxy_html.so

LoadModuleproxy_http_module modules/mod_proxy_http.so

LoadModulexml2enc_module modules/mod_xml2enc.so

注释掉ssl模块,不然启动的时候需要443端口会报错

#LoadModulessl_module modules/mod_ssl.so

 

在最后添加Proxy配置, 开启Apache正向代理并允许所有的请求可以访问代理

ProxyRequestsOn

<Proxy *>

    Requireall granted

</Proxy>

 

三. 启动运行

有两种方式可以启动: 
1.双击httpd.exe 
2.以管理员身份进入命令行到bin目录,使用命令httpd-k install 把Apache安装成系统服务,在服务列表里面可以查看是否安装成功 

在windows配置Apache httpd代理服务器

然后使用命令httpd -kstart 启动服务 
httpd的命令参数详情可以使用httpd -h 查看

httpd -krestart //重启

httpd -k stop//停止

记得关闭本代理服务器电脑的防火墙,局域网内使用代理只需关闭域网络防火墙

在windows配置Apache httpd代理服务器

四. 客户端配置验证

在需要用到linux机器上配置如下

vi /etc/profile  //编辑此文件,在最下方添加如下代理配置

http_proxy=172.16.56.45:9901

https_proxy=$http_proxy

no_proxy=localhost,127.0.0.1

export http_proxyhttps_proxy no_proxy

其中

http_proxy:http协议使用代理服务器地址;

https_proxy:https协议使用安全代理地址;

172.16.56.45::代理地址,可以是IP,也可以是域名;

9901:使用的端口;

no_proxy:不使用代理的主机或IP。

保存退出,注销重新登陆系统即可生效。

验证之前不能连接外网的linux机器上验证是否可以通过代理成功上网

在windows配置Apache httpd代理服务器

在windows配置Apache httpd代理服务器

同时可打开Apache/logs/access.log日志查看访问路径

在windows配置Apache httpd代理服务器

连接成功!

关闭代理服务

在windows配置Apache httpd代理服务器

再次验证linux机器是否还能上外网

在windows配置Apache httpd代理服务器

发现连接失败,至此代理服务安装成功,启动httpd服务可正常使用。


如果只是代码里面需要用到代理则不用在环境变量里面配置,如下java用httpClient使用代理调用接口的例子

public class ClientExecuteProxy {

    public static void main(String[] args)throws Exception {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            HttpHost target = new HttpHost("httpbin.org", 443, "https");
            HttpHost proxy = new HttpHost("127.0.0.1", 8080, "http");

            RequestConfig config = RequestConfig.custom()
                    .setProxy(proxy)
                    .build();
            HttpGet request = new HttpGet("/");
            request.setConfig(config);

            System.out.println("Executing request " + request.getRequestLine() + " to " + target + " via " + proxy);

            CloseableHttpResponse response = httpclient.execute(target, request);
            try {
                System.out.println("----------------------------------------");
                System.out.println(response.getStatusLine());
                System.out.println(EntityUtils.toString(response.getEntity()));
            } finally {
                response.close();
            }
        } finally {
            httpclient.close();
        }
    }

}