Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache mod_重写和多个域_Apache_Mod Rewrite_Mod Proxy - Fatal编程技术网

Apache mod_重写和多个域

Apache mod_重写和多个域,apache,mod-rewrite,mod-proxy,Apache,Mod Rewrite,Mod Proxy,我尝试使用mod_rewrite将多个域映射到一台主机上的不同servlet。 例如: www.dom1.com->192.168.1.n/dom1 www.dom2.com->192.168.1.n/dom2 我使用的是mod_rewrite和mod_proxy以及VirtualHost指令,但是通过ProxyPassReverse的反向映射似乎没有像我预期的那样工作 ProxyPassReverse /subdomain.domain.com http://192.168.1.n/subdo

我尝试使用mod_rewrite将多个域映射到一台主机上的不同servlet。 例如:

www.dom1.com->192.168.1.n/dom1

www.dom2.com->192.168.1.n/dom2

我使用的是mod_rewrite和mod_proxy以及VirtualHost指令,但是通过ProxyPassReverse的反向映射似乎没有像我预期的那样工作

ProxyPassReverse /subdomain.domain.com http://192.168.1.n/subdomain
不起作用。我已使用打开“重写登录”

RewriteLog /var/log/rewrite.log
从日志中我可以说重写是有效的,问题似乎在于反向映射。但是,我看不到任何反向映射条目。 似乎没有记录反向映射,或者需要激活不同的命令。
(Apache和servlet容器在不同的机器上,但我认为这并不重要?

毕竟我找到了一个适合我的解决方案。 这是我的配置的摘录,其中显示了域1的一个虚拟主机

<VirtualHost *>
  ServerName www.dom1.com
  ServerAlias dom1.com

  RewriteEngine On

  # logs might be omitted
  RewriteLog /var/log/dom1_rewrite.log
  RewriteLogLevel 2
  CustomLog /var/log/dom1_custom.log common
  ErrorLog /var/log/dom1_error.log

  # rewrite to internal ip
  RewriteRule ^/(.*) http://192.168.1.105/dom1/$1 [L,P,E=proxy_ok:1]

  # Preserve the host-part in the forwarded url
  ProxyPreserveHost On

  # Substitute responses with the original
  ProxyPassReverse / http://192.168.1.105/dom1/
  ProxyPassReverse / http://192.168.1.105/dom1
  ProxyPassReverse / http://dom1.com/dom1/
  ProxyPassReverse / http://dom1.com/dom1
</VirtualHost>

服务器名www.dom1.com
ServerAlias dom1.com
重新启动发动机
#日志可能会被省略
RewriteLog/var/log/dom1_rewrite.log
重写日志级别2
CustomLog/var/log/dom1_custom.log公共
ErrorLog/var/log/dom1_error.log
#重写到内部ip
重写规则^/(*))http://192.168.1.105/dom1/$1[L,P,E=proxy_ok:1]
#在转发的url中保留主机部分
代理主机
#用原始答案替换回答
ProxyPassReverse/http://192.168.1.105/dom1/
ProxyPassReverse/http://192.168.1.105/dom1
ProxyPassReverse/http://dom1.com/dom1/
ProxyPassReverse/http://dom1.com/dom1
我的第一个配置有什么问题?我必须保留主机,然后添加所有必要的ProxyPassReverse规则来替换响应

这是我的mod_代理配置:

<IfModule mod_proxy.c>
        #turning ProxyRequests on and allowing proxying from all may allow
        #spammers to use your proxy to send email.

        ProxyRequests Off

        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Deny from all

               # Proxies just in case Proxy_ok is set
               Allow from env=proxy_ok
        </Proxy>

        # Not sure whether we need this ...
        # Enable/disable the handling of HTTP/1.1 "Via:" headers.
        # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
        # Set to one of: Off | On | Full | Block
        ProxyVia On
</IfModule>

#打开代理请求并允许从所有代理中进行代理可能会允许
#垃圾邮件发送者使用您的代理发送电子邮件。
代理请求关闭
添加默认字符集
命令拒绝,允许
全盘否定
#仅在设置了Proxy_ok时使用代理
允许来自环境=代理\u确定
#不确定我们是否需要这个。。。
#启用/禁用HTTP/1.1“Via:”头的处理。
#(“Full”添加服务器版本;“Block”删除所有传出Via:headers)
#设置为:关|开|满|块之一
ProxyVia On
可能会有更清洁的解决方案,但如果它能正常工作的话