Nginx
NGINX 反向代理 Apache 執行在埠 8080 和 owncloud
我有 nginx 作為我的主要網路伺服器執行。我已經在 8080 埠上安裝了執行 apache 的 owncloud。我知道 owncloud 對 nginx 有非官方的社區支持,但我更喜歡保持官方支持。
我目前的問題是,反向代理似乎沒有按預期工作。它一直在載入我的預設網站。我的網站通過具有 HTTPS 的靈活 SSL 證書的 cloudflare 執行。
不過我可以去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
當 Nginx 是您的主要網路伺服器時,您為什麼使用 Apache?Owncloud 在 Nginx(沒有 Apache)上執行良好。
您必須配置 Nginx 以使用您的 Apache 作為上游,而不是在您的 .php 位置內。
嘗試類似:
upstream owncloud { server localhost:8080; } server { location / { proxypass http://owncloud; } }
有關更多資訊,請參閱nginx 上游文件