Рейтинг:1

ProxyPass и ProxyPassReverse вызывают ошибку 500 на сервере

флаг in

У нас есть следующее:

  • Статический сайт WordPress по адресу https://www.domain1.com.
  • Веб-приложение React/Django на https://www.domain2.com с тремя основными URI:
    • /
    • /админ
    • /апи

Мы хотели бы, чтобы они выглядели так, как будто это один и тот же домен в https://www.domain1.com. Мне сказали, что это можно сделать, установив Обратный прокси на веб-сервере Apache, который находится по адресу https://www.domain1.com. Из-за этого нам пришлось бы перенести текущий / из https://www.domain2.com, к /портал или же /щиток приборов, что не проблема.

Что должно произойти, если есть ссылка на https://www.domain1.com/portal/*, он будет служить https://www.domain2.com/portal/*, но все равно скажет https://www.domain1.com/portal/* в браузере. Таким образом, для пользователя это выглядит как тот же веб-сайт, даже если он исходит из другого домена.

Во всяком случае, поэтому я пытаюсь изменить .htaccess за https://www.domain1.com/ добавив в начало следующее:

ProxyPass "/портал" "https://www.domain2.com/portal"
ProxyPassReverse "/portal" "https://www.domain2.com/portal"

# или просто 

ProxyPass "/портал" "https://www.domain2.com/"
ProxyPassReverse "/portal" "https://www.domain2.com/"

Это вызывает 500 ошибка на всем сайте WordPress.

Это вся полнота .htaccess:

ProxyPass "/портал" "https://www.domain2.com/portal"
ProxyPassReverse "/portal" "https://www.domain2.com/portal"

# НАЧАЛО WpFastestCache
# Время изменения: 09-09-21 9:26:57
<IfModule mod_rewrite.c>
RewriteEngine включен
Переписать Базу /
RewriteCond %{HTTPS} = on
RewriteCond %{HTTP_HOST} ^www.domain1.com
# Запустить исключение WPFC
# Завершить исключение WPFC
# Start_WPFC_Exclude_Admin_Cookie
RewriteCond %{HTTP:Cookie} !wordpress_logged_in_[^\=]+\[email protected]
RewriteCond %{HTTP:Cookie} !wordpress_logged_in_[^\=]+\=ad,om
# End_WPFC_Exclude_Admin_Cookie
RewriteCond %{HTTP_HOST} ^www.domain1.com
RewriteCond %{HTTP_USER_AGENT} !(facebookexternalhit|WP_FASTEST_CACHE_CSS_VALIDATOR|Twitterbot|LinkedInBot|WhatsApp|Mediatoolkitbot)
RewriteCond %{HTTP_USER_AGENT} !(WP\sFastest\sCache\sPreload(\siPhone\sMobile)?\s*Bot)
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_URI} !(\/){2}$
RewriteCond %{REQUEST_URI} ![^\/]+\/$
Переписать условие %{QUERY_STRING} !.+
RewriteCond %{HTTP:Cookie} !comment_author_
RewriteCond %{HTTP:Cookie} !safirmobilswitcher=mobil
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/all/$1/index.html -f [или]
RewriteCond /nfs/c09/h02/mnt/135490/domains/domain1.com/html/wp-content/cache/all/$1/index.html -f
RewriteRule ^(.*) "/wp-content/cache/all/$1/index.html" [L]
</ЕслиМодуль>
<FilesMatch "index\.(html|htm)$">
Кодировка AddDefaultCharset UTF-8
<ifModule mod_headers.c>
FileETag Нет
ETag заголовка не установлен
Заголовок установил Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Заголовок установил Pragma "без кеша"
Набор заголовков Истекает "Пн, 29 октября 1923 г., 20:30:00 по Гринвичу"
</ifModule>
</FilesMatch>
# КОНЕЦ WpFastestCache
# НАЧАЛО GzipWpFastestCache
<IfModule mod_deflate.c>
AddType x-font/woff .woff
AddType x-шрифт/ttf .ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE текстовый/обычный
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
Приложение AddOutputFilterByType DEFLATE/xml
Приложение AddOutputFilterByType DEFLATE/xhtml+xml
Приложение AddOutputFilterByType DEFLATE/rss+xml
Приложение AddOutputFilterByType DEFLATE/javascript
Приложение AddOutputFilterByType DEFLATE/x-javascript
Приложение AddOutputFilterByType DEFLATE/x-font-ttf
AddOutputFilterByType DEFLATE x-font/ttf
Приложение AddOutputFilterByType DEFLATE/vnd.ms-fontobject
AddOutputFilterByType Шрифт DEFLATE/шрифт opentype/шрифт ttf/шрифт eot/otf
</ЕслиМодуль>
# КОНЕЦ GzipWpFastestCache
# НАЧАЛО LBCWpFastestCache
<FilesMatch "\.(webm|ogg|mp4|ico|pdf|flv|avif|jpg|jpeg|png|gif|webp|js|css|swf|x-html|css|xml|js|woff|woff2| otf|ttf|svg|eot)(\.gz)?$">
<IfModule mod_expires.c>
Приложение AddType/шрифт-woff2 .woff2
Приложение AddType/x-font-opentype .otf
ExpiresActive On
ExpiresDefault A0
ExpiresByType видео/webm A10368000
ExpiresByType видео/ogg A10368000
ExpiresByType видео/mp4 A10368000
ExpiresByType image/avif A10368000
ExpiresByType image/webp A10368000
ExpiresByType image/gif A10368000
ExpiresByType image/png A10368000
ExpiresByType image/jpg A10368000
ExpiresByType image/jpeg A10368000
ExpiresByType image/ico A10368000
ExpiresByType image/svg+xml A10368000
ExpiresByType текст/css A10368000
ExpiresByType текст/javascript A10368000
Приложение ExpiresByType/javascript A10368000
Приложение ExpiresByType/x-javascript A10368000
Приложение ExpiresByType/font-woff2 A10368000
Приложение ExpiresByType/x-font-opentype A10368000
Приложение ExpiresByType/x-font-truetype A10368000
</ЕслиМодуль>
<IfModule mod_headers.c>
Набор заголовков Expires "max-age=A10368000, public"
ETag заголовка не установлен
Набор заголовков
FileETag Нет
</ЕслиМодуль>
</FilesMatch>
# КОНЕЦ LBCWpFastestCache


# Редирект постоянный / https://www.domain1.com
RewriteEngine включен
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# НАЧАТЬ WordPress
RewriteEngine включен
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Авторизация}]
Переписать Базу /
Правило перезаписи ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Правило перезаписи. /index.php [Л]
# ЗАВЕРШИТЬ WordPress

Что я тут напутал?

флаг kz
Непонятно, почему вам также необходимо изменить URL-адрес `domain2.com` на `/portal`? `/portal`, по-видимому, просто для того, чтобы отличить URL-адрес прокси от `domain1.com`?
cjones avatar
флаг in
@MrWhite После публикации этого и повторного просмотра документации кажется, что нет никаких причин, по которым я не мог бы просто сделать `ProxyPass "/portal" "https://www.domain2.com/"`.
флаг kz
...Да, точно.
флаг kz
... за исключением того, что у вас есть несоответствие завершающих косых черт в этой конкретной директиве. Это должен быть `ProxyPass /portal/ https://www.domain2.com/` – в противном случае вы получите двойную косую черту в начале URL-пути в проксируемом запросе.
Рейтинг:2
флаг in

ПроксиПасс не допускается в файле .htaccess. Вам нужно поместить его прямо в конфиг Apache.

Контекст: конфигурация сервера, виртуальный хост, каталог

Ответить или комментировать

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