如何开启apacheapache添加虚拟目录录反向代理

使用Apache的mod_proxy模块设置其反向代理 - 为程序员服务
使用Apache的mod_proxy模块设置其反向代理
反向代理简介
本文介绍一下使用mod_proxy模块配置Apache2作为反向代理服务器。
首先什么是反向代理呢?我们来看两个例子。
晚上在实验室,我很饿,但是由于某种原因不能亲自去超市买吃的,我就对yuri同学说:“yuri,我要一袋小浣熊干脆面,你去帮我买一袋带回来!”yuri听罢,跑去超市买了一袋干脆面给了我,这样,我愉快的吃上了干脆面。在这个过程中,我让yuri代理我去做了一些事情,把超市想象成Server,把我想象成Client,那么yuri起到的就是一个正向代理的作用,正向代理,代理的是Client。
再看另一个例子。超市授权yuri作为代理负责接客。顾客买东西不直接去超市买,直接去yuri那里:“yuri,我要一袋干脆面!”,这时yuri就会去超市取出干脆面给顾客。对于顾客来说,他不知道自己买的东西是在超市里,只知道yuri给了我想要的东西。仍然把顾客想象成Client,把超市想象成Server,这样,yuri起到的是一个反向代理的作用,反向代理,代理的是Server。
这里有一篇非常好的
介绍两种代理的作用以及应用场景。
一种应用场景
反向代理一种典型应用场景是我买了一个VPS,假设其IP是X.X.X.X,注册了一个域名,想跑一些网站。有一个用node写的网站,默认端口是3000。
如果我们想做出这样的映射:
X.X.X.X (即默认的80端口)
X.X.X.X:3000 (即node的站点)
当然,在域名提供商那里做一些配置,实现第一个映射不难,然后我们当然可以通过:3000访问到我的node站。
但是这样一点都不酷,当你向妹子吹嘘:“呐,我写了个很屌的网站,,加上3000端口号去访问下”。好吧,这时会想到把该node站的端口改成HTTP默认的80,以便可以直接通过访问到,但是问题又来了,已经有一个站点在80端口上了,这就麻烦了。
这时候,用Apache的反向代理可以非常优雅地解决这个问题。
mod_proxy和Apache
实现了代理和网关的功能。Apache的代理功能被分到几个不同的模块中:mod_proxy_http,mod_proxy_ftp,mod_proxy_ajp,mod_proxy_balancer,mod_proxy_connect。根据需求需要加载mod_proxy和不同的模块。
安装Apache2
首先确认Apache2已经安装在了机器上。在Ubuntu Server下去
/etc/apache2
下看一下,看看有没有
apache2.conf
sites-available
等目录,如果没有,使用:
$ sudo apt-get install apache2
即可安装。安装完成后,在浏览器访问机器的默认的80端口就会看到It works的提示了。
/etc/inid.d/apache2
中有apache的控制脚本,使用这些脚本控制Apache。
* Usage: /etc/init.d/apache2 {start|stop|graceful-stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean|status}
安装并加载mod_proxy
接着,使用以下命令看一下Apache目前已经加载了哪些模块:
$ apache2ctl -M
如果没有proxy相关的模块,那么就需要安装模块:
$ sudo apt-get install libapache2-mod-proxy-html
还要安装它的依赖:
$ sudo apt-get install libxml2-dev
接着enable proxy模块:
$ a2enmod proxy proxy_http
至此为止,我们做好了准备工作,现在再次查看已加载的模块发现已经有proxy相关的模块了。
配置反向代理
打开Apache2的默认的配置文件
/etc/apache2/sites-enabled/000-default
,增加一个
VirtualHost *:80
&VirtualHost *:80&
ServerAdmin webmaster@localhost
ServerName
ProxyRequests off
Order deny,allow
allow from all
&Location /&
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
&/Location&
&/VirtualHost&
这样,就把来自请求转发给了localhost:3000,而80端口仍然可用。
同时将旧的
VirtualHost *:80
ServerName
,完成的配置文件如下:
&VirtualHost *:80&
ServerAdmin webmaster@localhost
DocumentRoot /var/www
&Directory /&
Options FollowSymLinks
AllowOverride None
&/Directory&
&Directory /var/www/&
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
&/Directory&
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
&Directory "/usr/lib/cgi-bin"&
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
&/Directory&
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
&Directory "/usr/share/doc/"&
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
&/Directory&
&/VirtualHost&
&VirtualHost *:80&
ServerAdmin webmaster@localhost
ServerName
ProxyRequests off
Order deny,allow
allow from all
&Location /&
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
&/Location&
&/VirtualHost&
之后,重启一下Apache。对了,别忘了去域名提供商那里设置一下!
---------------------------------------------------------
HOST NAME | IP ADDRESS/URL
| RECORD TYPE
---------------------------------------------------------
| URL Redirect
---------------------------------------------------------
| A(Address)
---------------------------------------------------------
| A(Address)
---------------------------------------------------------
以上就是我是配置Apache2将不同域名映射到同一IP的不同端口的全过程,如有错误,恳请指正。
反向代理简介
本文介绍一下使用mod_proxy模块配置Apache2作为反向代理服务器。
首先什么是反向代理呢?我们来看两个例子。
liushuaikobe
原文地址:, 感谢原作者分享。
您可能感兴趣的代码apache禁止别人使用反向代理自己的站
&网站跟目录新建.htaccess
RewriteEngine On
RewriteBase /
php_value auto_append_file proxy.php
proxy.php文件
$f = getenv(&HTTP_X_FORWARDED_FOR&);
$url = &&;
if ($f!=&&){
【声明】:黑吧安全网()登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱,我们会在最短的时间内进行处理。
上一篇:【】【】Apache反向代理设置方法内容简介:1修改 httpd.conf 文件中: 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 模块
1&修改 httpd.conf 文件中: 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 模块功能设置为启用。 2&在 httpd.conf 文件中,添加: ProxyPass /Test http://127.0.0.1:8080/ ProxyPassReverse /Test http://127.0.0.1:8080 &proxy http://127.0.0.1:8080& AllowOverride None Order Deny,Allow Allow from all &/proxy& 步骤2的功能:访问 http://127.0.0.1/Test/ 时,会重新反向代理访至 http://127.0.0.1:8080 3&重新启动Apache. OK}

我要回帖

更多关于 apache 虚拟目录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信