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

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

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

前端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正常,开始以为是连接数资源不够,结果,重启服务器完美解决!

分享给朋友:

相关文章

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

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

Ceontos挂载Windows共享当本地硬盘使用

1、自动挂载 //192.168.128.1/wwwroot /wwwroot cifs defaults,username=user,password=000000 0 02、临时挂载...

【原创】Windows10+WSL配置本地PHP测试环境

为什么?我为什么要这样做为什么不直接在win环境下搭建呢?个人原因有一下两点 php的某些功能只有在linux下才能更好的体现,比如Workerman下的GatewayWorker 我自己办公...

VPN链接后不开启默认网关访问远程局域网的方法

需求分析VPN链接到公司,正常访问不走互联网,但是要远程访问公司局域网。一般为了不走互联网只需要关闭VPN链接的默认网关即可,具体设计方法:VPN链接属性–网络–IP V4协议–属性–高级–取消“在远...

安装配置code-server使用https

安装配置code-server使用https

安装软件地址:https://github.com/coder/code-server/releases 用wget下载压缩文件后用tar -xzvf解压文件。 启动命令行带参数进入解压文件夹,启...

windows server 2022开机自动登录、自启动、修改3389端口

windows server 2022开机自动登录、自启动、修改3389端口

一、自动登录打开注册表:Win+R,输入:regedit依次打开:【计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersio...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。