Nano Hash - криптовалюты, майнинг, программирование

Nextcloud на apache и nginx как обратный прокси + SSL

У меня головная боль с Apache и Nginx. Когда я думаю, что один работает, другой нет, и наоборот...

Чтобы объяснить это немного парень:

У меня есть сервер с «установленным» Nextcloud, который работает с Apache2 и MySQL.

У меня есть Raspberry PI с Nginx, который действует как обратный прокси.

У меня эта настройка работала раньше, когда она не была чистой, поэтому я сорвал все и начал снова, надеюсь, с чистой конфигурацией.

Роутер 80/443 => Nginx RP => Nextcloud

Я пробовал множество файлов конфигурации и документации, и теперь я застрял с:

502 Плохой шлюз nginx/1.10.3

Независимо от того, какие изменения я вношу в Apache или Nginx, я все равно получаю одно и то же сообщение...

Вот мой обратный файл конфигурации Nginx:

server {

    listen rproxy_IP:80;
    server_name cloud.domain.com;
    return 301 https://$server_name$request_uri;
}

server {

    listen rproxy_IP:443 ssl;
    server_name cloud.domain.com;

    #Log storage
    access_log /var/log/nginx/cloud.domain.access.log;
    error_log /var/log/nginx/cloud.domain.error.log;

    #SSL Configurations
    ssl on;
    ssl_certificate /etc/nginx/ssl/crt.crt;
    ssl_certificate_key /etc/nginx/ssl/key.key;
    ssl_stapling on;
    ssl_stapling_verify on;

    location / {

        add_header Front-End-Https       on;
        proxy_headers_hash_max_size      512;
        proxy_headers_hash_bucket_size   64;
        proxy_set_header                 Host $host;
        proxy_set_header                 X-Forwarded-Proto $scheme;
        proxy_set_header                 X-Real-IP $remote_addr;
        proxy_set_header                 X-Forwarded-For $proxy_add_x_forwarded_for;

        # whatever the IP of your cloud server is
        proxy_pass                       https://nextcloud_IP;
    }
}

Когда я смотрю на журналы, я получаю это:

2018/08/27 13:42:25 [error] 19756#19756: *1 SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL handshaking to upstream, client: **Public_IP**, server: **cloud.domain.com**, request: "GET / HTTP/1.1", upstream: "https://**nextcloud_IP**:443/", host: "**cloud.domain.com**"

Мне трудно это понять, потому что до сегодняшнего утра у меня была точно такая же конфигурация, и у меня не было проблем.

А теперь вот мой конфиг Apache для Nextcloud:

    <VirtualHost rproxy_IP:80>
 DocumentRoot "/var/www/nextcloud"
 ServerName cloud.domain.com

Redirect permanent / https://cloud.domain.com/
Alias cloud.domain.com /var/www/nextcloud
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/nextcloud/>
 Options +FollowSymlinks
 AllowOverride All

 <IfModule mod_dav.c>
 Dav off
 </IfModule>

 SetEnv HOME /var/www/nextcloud
 SetEnv HTTP_HOME /var/www/nextcloud
 Satisfy Any

</Directory>

</VirtualHost>

А вот логи апача:

[Mon Aug 27 13:21:19.874269 2018] [mpm_prefork:notice] [pid 36967] AH00169: caught SIGTERM, shutting down
[Mon Aug 27 13:21:20.899777 2018] [mpm_prefork:notice] [pid 37263] AH00163: Apache/2.4.18 (Ubuntu) OpenSSL/1.0.2g configured -- resuming normal operations
[Mon Aug 27 13:21:20.899811 2018] [core:notice] [pid 37263] AH00094: Command line: '/usr/sbin/apache2'

Я должен упомянуть, что я использую подстановочный знак.

Маршрутизатор имеет переадресацию 80/443 на обратный прокси-сервер. Обратный прокси-сервер получает http и «увеличивает» его до https, а затем перенаправляет запрос в Apache-Nextcloud. Сертификат работает хорошо.

Пожалуйста, помогите мне, ребята, я не понимаю, что я делаю неправильно или что не работает и почему это не работает. Пожалуйста, сообщите мне, если вам нужна дополнительная информация. Я не могу раскрывать доменное имя, внутренний IP-адрес и общедоступный IP-адрес, как вы понимаете.

Заранее спасибо за ваши ответы.


Ответы:


1

Если я четко понял вашу схему, то у вас есть:

Client -> Router (NAT) -> Nginx (http/https) -> Apache (http)

И у вас есть ошибка 502, потому что вы пытаетесь отправить запрос proxy_pass на порт 443 Apache, которого не существует.

Я думаю, вам следует исправить строку proxy_pass следующим образом:

proxy_pass http://nextcloud_IP;
27.08.2018

2

Проклятие! Это сработало, я больше не получаю ошибку шлюза. Спасибо, mindfl. Я думаю, когда вы так долго смотрите на файл конфигурации, вы не видите таких мелких проблем :/

27.08.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..