您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > HTTP协议和正反向代理
HTTP协议和正反向代理培训时间:2012-09-04培训讲师:王彦杰目录[隐藏]1前置知识1.1HTTP协议基本概念1.2Web服务器(Apache,Tomcat,IIS)基本知识2Apache基础3正向代理4反向代理4.1反向代理概念与原理4.2反向代理的Apache配置4.3反向代理数据包在网络中传递4.4反向代理的常见问题(Host项和Location跳转)5HTTPKeepAlive6Cookie(domain,path)7HTTP调试工具8总结和进阶9作业前置知识HTTP协议基本概念可以先自学这个系列(一)HTTP协议详解(二)基本认证(三)压缩(四)缓存(五)代理(六)状态码详解(七)CookieWeb服务器(Apache,Tomcat,IIS)基本知识Apache基础基本命令(视系统不同,apache的执行文件名可能是httpd,而不是apache2)启动apache2-dmyConfigDir-fconfig.conf-kstart停止apache2-dmyConfigDir-fconfig.conf-kstop万能命令apache2-h配置文件结构:#全局的模块配置LoadModulealias_module/usr/lib/apache2/modules/mod_alias.soLoadModuledir_module/usr/lib/apache2/modules/mod_dir.soLoadModuleenv_module/usr/lib/apache2/modules/mod_env.so...IfModulemod_php5.cFilesMatch\.ph(p3?|tml)$SetHandlerapplication/x-httpd-php/FilesMatchFilesMatch\.phps$SetHandlerapplication/x-httpd-php-source/FilesMatch#Tore-enablephpinuserdirectoriescommentthefollowinglines#(fromIfModule...to/IfModule.)DoNOTsetittoOnasit#prevents.htaccessfilesfromdisablingit.IfModulemod_userdir.cDirectory/home/*/public_htmlphp_admin_valueengineOff/Directory/IfModule/IfModuleIfModulempm_prefork_moduleStartServers3MinSpareServers1MaxSpareServers2MaxClients16MaxRequestsPerChild64/IfModule#其他全局配置Listen80UsersslGroupsslServerTokensProductOnlyServerSignatureOffServerName127.0.0.1ServerAdminssl@koal.comDocumentRoot/kssl/GAD/各虚拟主机配置VirtualHost*:80ServerAdminssl@localhostDocumentRoot/kssl/GAD/VirtualHostLocationDirectory.htaccess正向代理概念客户端需要显式配置代理服务器地址客户端浏览器上输入的是最终应用的地址原理不使用代理的HTTP协议头GET/HTTP/1.1Host:192.168.1.8User-Agent:...使用代理时的HTTP协议头GET:192.168.1.8User-Agent:...正向代理的Apache配置LoadModuleproxy_module/usr/lib/apache2/modules/mod_proxy.soLoadModuleproxy_http_module/usr/lib/apache2/modules/mod_proxy_http.so...Listen0.0.0.0:3128VirtualHost*:3128ProxyRequestsOn/VirtualHost反向代理反向代理概念与原理概念信息隐藏,访问的是代理服务器的监听地址,实际应用服务器的地址对外隐藏客户端不需要任何配置原理由反向代理服务器决定将HTTP数据包转发给哪个应用(在代理服务上固定配置)局限性1.每个后端应用都要在代理服务器上单独配置2.页面跳转会有影响反向代理的Apache配置LoadModuleproxy_module/usr/lib/apache2/modules/mod_proxy.soLoadModuleproxy_http_module/usr/lib/apache2/modules/mod_proxy_http.soListen0.0.0.0:8080VirtualHost*:8080ProxyRequestsOffProxyPass/://192.168.1.8//VirtualHostSSL反向代理LoadModuleproxy_module/usr/lib/apache2/modules/mod_proxy.soLoadModuleproxy_http_module/usr/lib/apache2/modules/mod_proxy_http.soLoadModulessl_module/usr/lib/apache2/modules/mod_ssl.soUsersslGroupsslPidFilelog/reverse-ssl.pidErrorLoglog/error.logLogLeveldebugListen0.0.0.0:60443VirtualHost*:60443SSLEngineOnSSLCertificateFilepem/site.pemSSLCertificateKeyFilepem/site.keySSLCACertificateFilepem/ca/ca.pemProxyRequestsOffProxyPass/://192.168.1.8//VirtualHost反向代理数据包在网络中传递注:客户端为浏览器或curl命令,反向代理服务器为4.4.4.2:808,后端服务器为example.com。图例中省去了大部分不相关的http头以及body部分。不使用反向代理,直接在浏览器里输入访问地://example.com/ClientWebServer:example.com+-------------------------+|GET/host.phpHTTP/1.1|||Host:example.com|------------|+-------------------------+||+----------------+||HTTP/1.1200OK|--------|+----------------+|使用反向代理(代理服务器地址为4.4.4.2:808),在浏览器里输入反向代理的地址。注意Host字段,Host在经过代理服务器后根据配置项ProxyPass被改成了后端地址。这能使后端服务器能正确匹配到地址对应的VirtualHost项。curl:4.4.4.12webserver:example.com+----------------------------+|GET/proxy/host.phphttp/1.1||||Host:4.4.4.2:808|------------||+----------------------------+|||||+--------------------------------+|||GET/host.phphttp/1.1||||Host:example.com||||x-forwarded-for:4.4.4.1|------------|||x-forwarded-Host:4.4.4.2:808||||x-forwarded-server:proxy.com|||+--------------------------------+||||+----------------+||----------------------------|http/1.1200ok|||+----------------+|+----------------+|||http/1.1200ok|--------||+----------------+||带302重定向的页面代理。在浏览器里输入反向代理的地址这个页面会被重定向到/new.php。注意Host和Location字段。Host在经过代理后被改成了后端地址。Location在响应时经过代理,根据配置项ProxyPassReverse被改写为代理服务器地址。这是由于客户端在处理重定向时会根据Location发起新链接,若不改写Location,客户端将会在重定向后将直接向example.com发起连接,绕过了代理服务器curl:4.4.4.12webserver:example.com+----------------------------+|GET/proxy/host.phphttp/1.1||||Host:4.4.4.2:808|------------||+----------------------------+|||||+--------------------------------+|||GET/host.phphttp/1.1||||Host:example.com||||x-forwarded-for:4.4.4.1|------------|||x-forwarded-Host:4.4.4.2:808||||x-forwarded-server:proxy.com|||+--------------------------------+||||+--------------------------------------------+|||http/1.1302found|||--|Location:|||+---------------------------------------
本文标题:HTTP协议和正反向代理
链接地址:https://www.777doc.com/doc-2877289 .html