Apache httpd 代理服務搭建
簡介:使用Apache httpd來搭建代理服務是因爲其免費,開源,可控性較高,文檔較全。本文是以windows系統來代理服務器,linux客戶端使用此代理服務。若是想windows使用其服務,比如瀏覽器使用直接配置瀏覽器的網絡配置爲代理即可。
一. 下載安裝
下載地址:https://www.apachehaus.com/cgi-bin/download.plx
下載最新的適合自己的windows系統版本即可,我目前安裝的版本爲
httpd-2.4.29
下載後解壓
二. 配置代理信息
打開配置文件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安裝成系統服務,在服務列表裏面可以查看是否安裝成功
然後使用命令httpd -kstart 啓動服務
httpd的命令參數詳情可以使用httpd -h 查看
httpd -krestart //重啓
httpd -k stop//停止
記得關閉本代理服務器電腦的防火牆,局域網內使用代理只需關閉域網絡防火牆
四. 客戶端配置驗證
在需要用到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機器上驗證是否可以通過代理成功上網
同時可打開Apache/logs/access.log日誌查看訪問路徑
連接成功!
關閉代理服務
再次驗證linux機器是否還能上外網
發現連接失敗,至此代理服務安裝成功,啓動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(); } } }