【问题标题】:NGINX reverse proxy to Apache/NextcloudNGINX 反向代理到 Apache/Nextcloud
【发布时间】:2021-07-06 03:19:37
【问题描述】:

我有一个带有 NGINX 服务器的 Proxmox 服务器。作为 VPS,我有一个 Nextcloud。我可以通过IP登录。

我的 Proxmox 可通过域访问。我希望 Nginx 作为我的云和其他服务的反向代理。我在 proxmox.conf 中有这段代码

upstream proxmox {
    server proxmox.domain.com;
    
}
 
server {
    listen 80 default_server;
    rewrite ^(.*) https://$host$1 permanent;
}
 
server {
    listen 443;
    server_name proxmox.domain.com;
    ssl on;
    ssl_certificate /etc/ca-certificates/crt.crt;
    ssl_certificate_key /etc/ca-certificates/key.key;
    proxy_redirect off;
    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade"; 
        proxy_pass https://localhost:8006;
    proxy_buffering off;
    client_max_body_size 0;
    proxy_connect_timeout  3600s;
        proxy_read_timeout  3600s;
        proxy_send_timeout  3600s;
        send_timeout  3600s;
    }
}

upstream php {
    server nextcloud.domain.com;
}
server {

    listen 443;
    server_name nextcloud.domain.com;
    ssl on;
    ssl_certificate /etc/ca-certificates/crt.crt;
    ssl_certificate_key /etc/ca-certificates/key.key;
    proxy_redirect off;
    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade"; 
        proxy_pass https://192.168.178.139:443;
    proxy_buffering off;
    client_max_body_size 0;
    proxy_connect_timeout  3600s;
        proxy_read_timeout  3600s;
        proxy_send_timeout  3600s;
        send_timeout  3600s;
    }
}

这里是 Apache 的端口

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>


NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

这里是 Apache 的 nextcloud.conf:

<VirtualHost *:80>
 DocumentRoot "/var/www/html/nextcloud"
 ServerName nextcloud.domain.com

Redirect permanent / https://nextcloud.domain.com
Alias nextcloud.domain.com /var/www/html/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/htm/nextcloud
 SetEnv HTTP_HOME /var/www/html/nextcloud
 Satisfy Any

</Directory>

</VirtualHost>

我已将端口更改为 80/443,但每次出现 Bad Gateway 502

这里是 Nginx 服务器的错误日志。 Apache 为空时的错误日志。

2021/04/10 14:41:47 [error] 2684#2684: *197 connect() failed (111: Connection refused) while connecting to upstream, client: 91.184.168.251, server: nextcloud.domain.com, request: "GET / HTTP/1.1", upstream: "https://192.168.178.139:443/", host: "nextcloud.domain.com"

我对这个配置有什么问题?我从互联网上尝试了几个选项,但没有任何效果:/

我认为 Apache 出于安全原因拒绝了它。但我不知道在哪里可以配置它,让服务器在反向代理后面运行。

有人可以帮我吗? :)

【问题讨论】:

    标签: apache nginx ssl reverse-proxy nextcloud


    【解决方案1】:

    您是否配置了可信代理?

    为了安全,您必须明确定义 Nextcloud 信任的代理服务器。来自受信任代理的连接将被特殊处理以获取真实的客户端信息,用于访问控制和日志记录。参数配置在config/config.php

    参考:

    https://docs.nextcloud.com/server/21/admin_manual/configuration_server/reverse_proxy_configuration.html?highlight=trusted%20proxy#defining-trusted-proxies

    【讨论】:

      猜你喜欢
      • 2017-08-16
      • 2019-02-01
      • 2019-06-05
      • 2021-03-26
      • 1970-01-01
      • 2020-01-07
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多