首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RewriteRule重写ProxyPass

RewriteRule重写ProxyPass
EN

Unix & Linux用户
提问于 2022-08-04 19:51:13
回答 2查看 732关注 0票数 1

在centos 7机器上,我想在apache服务器旁边运行python服务器。我认为最简单的方法是将apache配置为反向代理。这是我的VirtualHost配置:

代码语言:javascript
复制
        DocumentRoot /home/username/mydomain/src
        ServerName mydomain.com
        ErrorLog logs/mydomain-error_log
        CustomLog logs/mydomain-access_log common
        DirectoryIndex index.php

    
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
        AddOutputFilterByType DEFLATE text/html text/plain text/xml
    


    ProxyPreserveHost On
    ProxyPass /mediaproxy http://127.0.0.1:9001/mediaproxy
    ProxyPassReverse /mediaproxy http://127.0.0.1:9001/mediaproxy

    LogLevel alert rewrite:trace6
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^/api/media/(.*) /data/$1 [L]
    RewriteRule ^/api/v1/* /api/v1/index.php [L]
    RewriteRule ^/assets/(.*) /site/v1/content/assets/$1 [L]
    RewriteRule ^/css/(.*) /site/v1/content/css/$1 [L]
    RewriteRule ^/js/(.*) /site/v1/content/js/$1 [L]
    RewriteRule ^/fonts/(.*) /site/v1/content/fonts/$1 [L]
    RewriteRule ^/* /index.php [L] # problematic rule

    // lets encrypt entries

现在,我的问题是重写规则优先于ProxyPass。当我访问mydomain.com/mediaproxy/somepage时,它为/index.php上的内容提供服务,内容由RewriteRule ^/* /index.php [L]指定。如果我删除了有问题的规则,反向代理就能正常工作。不幸的是我得留着它。

我如何告诉apache首先使用ProxyPass规则,并且只有在没有匹配时才使用RewriteRule

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2022-08-04 21:34:48

弄明白了。只要添加到重写规则中,它就开始表现为反向代理。

代码语言:javascript
复制
ProxyPass /mediaproxy http://127.0.0.1:9001/mediaproxy
ProxyPassReverse /mediaproxy http://127.0.0.1:9001/mediaproxy

在功能上与:

代码语言:javascript
复制
RewriteRule /mediaproxy http://127.0.0.1:9001/mediaproxy [P]

但是没有触发catch所有重写规则。

票数 1
EN

Unix & Linux用户

发布于 2022-08-10 18:59:14

RewriteCond添加到有问题的RewriteRule中,以排除访问ProxyPass中使用的路径的情况:

代码语言:javascript
复制
RewriteCond "%{REQUEST_URI}" !^/mediaproxy.*
RewriteRule ^/.* /index.php [L]

因此,您的“问题”RewriteRule将不匹配以"/mediaproxy“开头的任何URL。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/712458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档