当前位置:首页 > 服务器运维 > 正文内容

Apache虚拟目录以及反向代理相关设置

Z先生8年前 (2018-01-02)服务器运维2145

前端Apache,后端Tomcat,为了最大化效率,特使用本方法。动态文件通过反向代理至后端,静态文件(图片/CSS/JS)通过虚拟目录。

一、关于虚拟目录的四个点:

1、核心语句

Alias /statics /www/tomcat/webapps/WeChat/statics/

2、目录访问设定(注意:Apache2.2和Apache2.4该配置有差异)

<Directory /www/tomcat/webapps/WeChat/statics>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

3、目录锁定(如果有的话,如果有php_admin_value open_basedir的话,要加入虚拟目录的实际路径)

php_admin_value open_basedir /www/web/xcwl_com:/tmp:/www/tomcat/webapps/WeChat/statics

4、目录权限

/www/tomcat/webapps/WeChat/statics目录,Apache Web访问要能访问到。目录权限不足时,一般有以下错误提示:

Permission denied: access to /xxxxx denied (filesystem path '/xxxxxx') because search permissions are missing on a component of the path

具体的,可以查看Apache站点的错误日志

二、反向代理的两个点:

1、加载反向代理模块

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

可以在httpd.conf中去掉注释,也可以在虚拟化文件中加载。

2、反向代理配置

<IfModule mod_proxy.c> 
    ProxyRequests Off
    ProxyPass /statics/ !
    ProxyPass / http://localhost:8080/WeChat/
    ProxyPassReverse / http://localhost:8080/WeChat/
</IfModule>

“ProxyPass /statics/ !”这句的意思,是跳过/statics/目录,也就是咱们虚拟化过的目录。


三、完整示例代码:

<VirtualHost *:80>
DocumentRoot /www/web/wechat/public_html
ServerName wechat.xcwl.com
ServerAlias wechat.xcwl.com
CustomLog "logs/wechat.xcwl.com_access_log" common
ErrorLog "logs/wechat.xcwl.com_error_log"
php_admin_value open_basedir /www/web/xcwl_com:/tmp:/www/tomcat/webapps/WeChat/statics
Alias /statics /www/tomcat/webapps/WeChat/statics/
<IfModule mod_deflate.c>
    DeflateCompressionLevel 7
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
    AddOutputFilter DEFLATE css js html htm gif jpg png bmp php
</IfModule>
<IfModule mod_proxy.c> 
    ProxyRequests Off
    ProxyPass /statics/ !
    ProxyPass / http://localhost:8080/WeChat/
    ProxyPassReverse / http://localhost:8080/WeChat/
</IfModule>
</VirtualHost>
<Directory /www/web/wechat>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
<Directory /www/tomcat/webapps/WeChat/statics>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

四、遇到的坑

1、Apache反向代理有两种比较简易的方式实现,一种就是利用Apache的反向代理,另外一种是通过伪静态,具体伪静态配置如下:

端口型(未测试):

RewriteEngine on
RewriteCond %{SERVER_PORT} !^8080
RewriteRule ^/(.*) http://www.xcwl.com:8080/WeChat/$1 [P,L]

域名型(未测试,如果301跳转的话,下方的[P,L]修改为[R=301,L]):

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.xcwl.com
RewriteRule ^/(.*) http://www.xcwl.com/$1 [P,L]

2、配置之后,老出现404、403的错误或者200正常,开始以为是连接数资源不够,结果,重启服务器完美解决!

分享给朋友:

相关文章

php跨域代码,欣达CMS专用版

php跨域代码,欣达CMS专用版

核心代码(php)header('Access-Control-Allow-Origin:*'); header('Access-Control-Allow-Credenti...

西部数码有多垃圾,这里不想说了!

西部数码有多垃圾,这里不想说了!

西部数码有多垃圾,这里不想说了!所谓的独立单核,独享1G内存,峰值宽带12M这一切都是幌子罢了。一套老程序:ASP+ACCESS数据库(550m左右大小)。动不动就访问不到,有问必答提交后,就不停的建...

npm node-sass 报错的处理方案

第一步npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/第二步n...

一些低危提示漏洞的处理

无关痛痒的一些漏洞HTTP X-XSS-Protection 响应头缺失HTTP X-Download-Options 响应头缺失HTTP X-Content-Type-Options 响应头缺失HT...

Centos GIT强制更新、默认保存密码

输入一下命令,运行的时候,第一输入正确的账号密码系统会自动记录git config --global credential.helper store克隆git clone http://git地址.g...

网站压力测试之ab命令

一、什么是ab?ab是apachebench命令的缩写。ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apa...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。
请先 登录 再评论,若不是会员请先 注册