Mam następujące nginx config:nginx podścieżki karnetów proxy nie przekierowany
location /mail {
rewrite ^/mail/(.*) /$1 break;
proxy_pass https://roundcube-host;
proxy_connect_timeout 1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
}
z:
upstream roundcube-host {
server roundcube-ip-address:443;
}
Tak, chciałbym przekierować wszystkie żądania z/mail na serwerze backend roundcube.
Ale tylko żądanie pasujące do /mail
jest przekierowywane. Tak więc, /mail/plugins
, itp. ... nie są przekierowywane, co oznacza, że nie mam żadnych CSS lub JS, itp., Ponieważ nginx próbuje je znaleźć lokalnie.
Jak mogę poprawnie przekierować wszystkie ścieżki?
Oto moja kompletna konfiguracja nginx. Frontend jest własnością prywatną.
upstream phpcgi {
fair;
server 127.0.0.1:9000;
server 127.0.0.1:9001;
keepalive 5;
}
upstream roundcube-host {
server roundcube-ip-address:443;
}
server {
listen 443 ssl;
#server_name cloud.example.com;
ssl_certificate /etc/ssl/certs/owncloud.crt;
ssl_certificate_key /etc/ssl/private/owncloud.key;
access_log /var/log/nginx/data_access.log;
error_log /var/log/nginx/data_error.log info;
# Path to the root of your installation
root /var/www/;
client_max_body_size 10G; # set max upload size
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 = /core/templates/403.php;
error_page 404 = /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
deny all;
}
location/{
# The following 2 rules are only needed with webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ ^(.+?\.php)(/.*)?$ {
try_files $1 = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_param HTTPS on;
fastcgi_pass phpcgi;
# Or use unix-socket with 'fastcgi_pass unix:/var/run/php5-fpm.sock;'
fastcgi_param MOD_X_ACCEL_REDIRECT_ENABLED on;
}
# Optional: set long EXPIRES header on static assets
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Optional: Don't log access to assets
access_log off;
}
# Change the path according to the data directory
location ~ ^/var/data {
internal;
root /;
}
location ~ ^/tmp/oc-noclean/.+$ {
internal;
root /;
}
location ~ ^/mail(.*)$ {
rewrite ^/mail/(.*) /$1 break;
proxy_pass https://roundcube-host;
proxy_connect_timeout 1;
proxy_set_header Host $http_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 $https;
}
}
przykro. To nie działa. –
Edytowałem moje pytanie z pełną konfiguracją. –
OK, znalazłem to. To tylko kolejność, którą trzeba było zmienić. –