NGINX 反向代理 Apache 使用 owncloud 在端口 8080 上运行

NGINX 反向代理 Apache 使用 owncloud 在端口 8080 上运行

我使用 nginx 作为我的主要 Web 服务器。我安装了 owncloud,并在端口 8080 上运行 apache。我知道 owncloud 为 nginx 提供了非官方社区支持,但我更愿意保留官方支持。

我目前的问题是,反向代理似乎没有按预期工作。它一直在加载我的默认网站。我的网站通过 cloudflare 运行,并使用灵活的 HTTPS SSL 证书。

但是我可以直接访问xxx.xxx.xxx.xxx:8080并访问owncloud。

主 nginx 配置

user www-data;

worker_processes 2;
worker_rlimit_nofile 20480;

pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events
{
    worker_connections 768;
    #    multi_accept            on;
}

http
{
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 15;
    types_hash_max_size 2048;
    server_tokens off;

    #    log_format            main '$remote_addr - $remote_user [$time_local] "$request" $status  $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
    log_format main 'xx.xx.xx.xx - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "xx.xx.xx.xx"';

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log;

    gzip on;
    gzip_disable "msie6";

    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    proxy_cache_path /tmp/nginx-filecache levels=1:2 keys_zone=FILES:10m inactive=7d max_size=800g;

    #include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;


}

Apache 的 Nginx 配置

server {
    listen 80;
    listen 443 ssl;
    server_name gomn.net;

    root /var/www/owncloud;
    index index.php index.htm index.html;

    location / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location ~ /\. {
        deny all;
    }
}

这是我的 owncloud 的 apache 配置

<VirtualHost *:8080>

    DocumentRoot /var/www/owncloud
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost/"
    </FilesMatch>

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

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

        SetEnv HOME /var/www/owncloud
        SetEnv HTTP_HOME /var/www/owncloud

    </Directory>
    <Directory /var/www/owncloud/data/*/>
        Allow from None
        Order allow,deny
    </Directory>


    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined


</VirtualHost>

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

答案1

如果 Nginx 是您的主要 Web 服务器,为什么还要使用 Apache?Owncloud 确实可以在 Nginx 上运行良好(无需 Apache)。

您必须配置 Nginx 以使用 Apache 作为上游,而不是在您的 .php 位置内。

尝试以下方法:

upstream owncloud {
  server localhost:8080;
}

server {
  location / {
    proxypass http://owncloud;
  }
}

有关详细信息,请参阅nginx 上游文档

相关内容