Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Проксификация в apache  (Прочитано 838 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Newto

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Проксификация в apache
« : 09 Декабрь 2020, 13:50:39 »
Добрый день. Есть ubuntu сервер, там стоит апач. Есть сайт, назову его тут mysite.com
Пытаюсь добиться того что бы при запросе страницы https://mysite.com/test отдавалась страница https://mysite.com:3000/test
Делаю это след. образом:
В файл /etc/apache2/sites-enabled/mysite_com.conf прописываю cледующие директивы:

<VirtualHost *:443>

  DocumentRoot /var/www/www-root/data/www/mysite.com
  ServerName mysite.com

  SSLEngine on
  #SSLProxyEngine On // эту опцию и включал и выключал -- результат тот же
  ProxyRequests Off
  ProxyPreserveHost On
  RewriteEngine On
 
  SSLCertificateFile  /var/www/www-root/data/www/ssl/mysite_com.crt
  SSLCertificateKeyFile /var/www/www-root/data/www/ssl/privatekey.key
  SSLCertificateChainFile  /var/www/www-root/data/www/ssl/mysite_com.ca-bundle
     
  ProxyPass  /test https://mysite.com:3000/test
  ProxyPassReverse  /test https://mysite.com:3000/test
 
</VirtualHost>

Перезагружаю апач, захожу на https://mysite.com/test, получаю 404 ошибку, при этом https://mysite.com:3000/test работает
, т.е. не работает именно проксификация. Error.log молчит. Что это может быть и как с этим бороться?
« Последнее редактирование: 09 Декабрь 2020, 17:33:36 от Newto »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27663
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #1 : 09 Декабрь 2020, 17:11:23 »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Newto

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #2 : 09 Декабрь 2020, 17:36:01 »
что бы при запросе страницы https://mysite.com/test отдавалась страница https://mysite.com:3000/test
ProxyPass  /test https://mysite.com:3000/widget/effects/
  ProxyPassReverse  /test https://mysite.com:3000/widget/effects/
Чо?…

Исправил. Ошибся при редактировании копируемого файла. (Это НЕ решение если что)
« Последнее редактирование: 09 Декабрь 2020, 19:22:50 от Newto »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27663
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #3 : 09 Декабрь 2020, 20:01:41 »
Смотрите access log обоих серверов.
Не удивлюсь, если запрашивается /test/test
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Newto

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #4 : 09 Декабрь 2020, 21:13:43 »
Смотрите access log обоих серверов.
Не удивлюсь, если запрашивается /test/test

По непонятной пока мне причине access_log не пишется. Т.е. он пустой. На вирт. хосте прописано
LogLevel info
CustomLog test-logs/access_log combined
лог появляется если его удалить, но инфу не собирает. Час от часу не легче...

Оффлайн Виктop

  • Участник
  • *
  • Сообщений: 237
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #5 : 09 Декабрь 2020, 21:30:12 »
Что у вас является бэкендом?
Почему Вы проксируете запрос через инет, когда бэкенд на том же сервере?
Почему при проксировании Вы указываете протокол https?

Оффлайн Newto

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #6 : 09 Декабрь 2020, 22:44:00 »
Что у вас является бэкендом?
На бэке php и node.js Нода слушает 3000 порт.

Почему Вы проксируете запрос через инет, когда бэкенд на том же сервере?
Так написано в примере на сайте apache.org
А каким образом это можно сделать иначе?

Почему при проксировании Вы указываете протокол https?
Потому что сайт работает на https. Поправьте меня если я не прав, я думал, что если есть рабочая страница https://mysite.com:3000/test, то и при проксировании нужно указывать адрес с тем же протоколом.

« Последнее редактирование: 10 Декабрь 2020, 00:12:13 от Newto »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27663
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #7 : 10 Декабрь 2020, 00:29:39 »
Поправьте меня если я не прав
Прав. Плюс при проксировании https на http возникают некоторые сложности со стыковкой в отдельных моментах.
Я так нарвался с mod_svn. Поправил-настроил, но времени на поиски решения ушло порядочно.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Виктop

  • Участник
  • *
  • Сообщений: 237
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #8 : 10 Декабрь 2020, 00:40:14 »
Для проксирования внутри операционной системы нужно использовать Unix сокет.
Если есть желание, то можно и по TCP (хотя нежелательно), тогда в директиве ProxyPass нужно указывать localhost и да, в таком случае https

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27663
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #9 : 10 Декабрь 2020, 01:27:56 »
Виктop, бред собачий.

Пользователь добавил сообщение 10 Декабрь 2020, 01:43:55:
У меня когда-то было настроено вот так:
<VirtualHost *:80>
    ServerName   hosting64.xx.lan

    UseCanonicalName Off

    ServerAdmin hosting64-proxy@xx.lan

    ProxyPass / http://hosting64.xx.lan/

    ProxyPreserveHost On
    AllowEncodedSlashes On

    ErrorLog     "/var/log/apache2/error.proxy64.log"

    LogFormat "%V:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" proxy_combined
    CustomLog    "/var/log/apache2/access.proxy64.log" proxy_combined

</VirtualHost>
« Последнее редактирование: 10 Декабрь 2020, 01:44:33 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Виктop

  • Участник
  • *
  • Сообщений: 237
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #10 : 10 Декабрь 2020, 02:09:52 »
AnrDaemon, Почему же бред??? Или вы и его собираетесь трое суток с логами мурыжить как того чувака?

Оффлайн valrust

  • Активист
  • *
  • Сообщений: 285
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #11 : 10 Декабрь 2020, 02:35:30 »
Перезагружаю апач, захожу на https://mysite.com/test, получаю 404 ошибку, при этом https://mysite.com:3000/test работает
А что дадут команды?
Код: (bash) [Выделить]
curl -I -s https://mysite.com/test | grep HTTP
curl -I -s https://mysite.com:3000/test | grep HTTP
Команды нужно выполнить на том хосте, где работает Apache.

Оффлайн Виктop

  • Участник
  • *
  • Сообщений: 237
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #12 : 10 Декабрь 2020, 02:53:27 »
Кстати, почему некоторые просят смотреть access log? Не помню как в apache, а в nginx ошибки в том числе и 404 поумолчанию пишутся в файл error.log

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27663
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #13 : 10 Декабрь 2020, 08:02:04 »
Виктop, потому что в access log пишутся запросы. И там видно, какой адрес реально запросил клиент.
Если access log не пишется, надо разбираться, почему.
Если на :3000 нода - надо смотреть её логи в первую очередь.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Виктop

  • Участник
  • *
  • Сообщений: 237
    • Просмотр профиля
Re: Проксификация в apache
« Ответ #14 : 10 Декабрь 2020, 14:12:35 »
Newto, Вы решили проблему или нет?
введите вот эту строку вместо своей
ProxyPass  /test https://localhost:3000/test
Если не заведётся, выкладывайте сюда сценарий запуска веб-сервера на js

 

Страница сгенерирована за 0.076 секунд. Запросов: 25.