Apache ProxyPass, только если конкретная строка совпадает в поддомене - PullRequest
0 голосов
/ 29 ноября 2018

Я использую apache в качестве обратного прокси, есть ли способ ProxyPass, только если мой поддомен соответствует определенной строке, например:

<VirtualHost *:80> ServerAlias *.example.com <If "%{HTTP_HOST} -strmatch 'hello*.example.com'"> ProxyPreserveHost On ProxyPass "/" "http://192.168.1.22/" ProxyPassReverse "/" "http://192.168.1.22/" </If> </VirtualHost>

Невозможно использовать ProxyPass внутри«Если», есть ли работа для достижения той же цели?

спасибо!

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Я бы попробовал это с mod_rewrite и директивой Proxy.

<VirtualHost *:80>
  ServerName       *.example.com
  RewriteEngine    on
  RewriteCond      %{HTTP_HOST} ^hello*\.example\.com$
  RewriteRule      ^/(.*)$   http://192.168.1.22/$1 [proxy] 
  ProxyPassReverse / http://192.168.1.22/
</VirtualHost>
0 голосов
/ 29 ноября 2018

Я думаю, что вы можете использовать Regex или RewriteCond, если это возможно, и я объясню свое решение этой проблемы:

Поскольку вы хотите, чтобы совпадала одна и та же строка, вы можете исключить все, кроме этой строки, которую выищите, я написал для вас RewriteCond, если он пригоден для использования:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^.*\.example\.com[NC]
RewriteCond %{HTTP_HOST} !=hello.example.com[NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

Этот код должен работать, если нет, я буду искать условие регулярного выражения, чтобы создать один и тот же шаблон с разнымиметод, исключая каждый поддомен, кроме того, который совпадает с hello.example.com

У меня есть также этот другой код

RewriteCond %{HTTP_HOST} (^|\.)example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^(hello)\.example\.com$ [NC]
RewriteRule ^ http://hello.example.com%{REQUEST_URI} [NE,R=301,L]
...