Nextcloud на apache и nginx в качестве обратного прокси + SSL - PullRequest
0 голосов
/ 27 августа 2018

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

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

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

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

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

Router 80/443 => Nginx RP => Nextcloud

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

502 Bad Gateway 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>

А вот логи Apache:

[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-адрес, как вы понимаете.

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

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

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

0 голосов
/ 27 августа 2018

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

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

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

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

proxy_pass http://nextcloud_IP;
...