Puncte:0

Utilizați mai multe blocuri de server în NGINX pe aceeași gazdă și același port

drapel be

Vreau să configurez serverul astfel încât rădăcina serverului să servească niște fișiere statice, pe care un anumit endpoing, /nextcloud, servește nextcloud pe același domeniu.

Aici este nginx.conf-ul meu -

lucrător_procese 8;

evenimente {
    conexiuni_muncitor 1024;
}

http {
    include mime.tipuri;
    aplicație de tip_default/octet-stream;
    sendfile activat;
    keepalive_timeout 65;

    Server {
        asculta 80 http2;
        asculta [::]:80 http2;
        nume_server gazdă locală;
        rădăcină /srv/http/;
        Locație / {
            index index.html index.php;
            try_files $uri $uri/ =404;
            autoindex activat;
        }
        pagina_eroare 500 502 503 504 /50x.html;
        locație = /50x.html {
            root /usr/share/nginx/html;
        }
    }
    includ /etc/nginx/sites-enabled/*;
}

Aici este /etc/nginx/sites-enabled/nextcloud.conf al meu

php-handler în amonte {
    server unix:/run/nextcloud/nextcloud.sock;
}

Server {
    asculta 80;
    asculta [::]:80;
    nume_server nextcloud;

    root /usr/share/webapps/;

    locație = /robots.txt {
        permite totul;
        log_not_found off;
        access_log off;
    }

    locație ^~ /.cunoscut {
        locație = /.well-cunoscut/carddav { return 301 /nextcloud/remote.php/dav/; }
        locație = /.well-cunoscut/caldav { return 301 /nextcloud/remote.php/dav/; }

        locație /.well-known/acme-challenge { try_files $uri $uri/ =404; }
        locație /.well-cunoscut/pki-validation { try_files $uri $uri/ =404; }

        returnează 301 /nextcloud/index.php$request_uri;
    }

    locație ^~ /nextcloud {
        client_max_body_size 512M;
        client_body_timeout 300s;
        fastcgi_buffers 64 4K;

        gzip on;
        gzip_vary on;
        gzip_comp_level 4;
        gzip_min_length 256;
        gzip_proxied expirat no-cache no-store private no_last_modified no_etag auth;
        gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font- ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

        add_header Referrer-Policy „no-referrer” întotdeauna;
        add_header X-Content-Type-Options „nosniff” întotdeauna;
        add_header X-Download-Options „noopen” întotdeauna;
        add_header X-Frame-Options „SAMEORIGIN” întotdeauna;
        add_header X-Permitted-Cross-Domain-Policies „niciunul” întotdeauna;
        add_header X-Robots-Tag „none” întotdeauna;
        add_header X-XSS-Protection „1; mod=bloc” întotdeauna;

        fastcgi_hide_header X-Powered-By;

        index index.php index.html /nextcloud/index.php$request_uri;

        locație = /nextcloud {
            if ( $http_user_agent ~ ^DavClnt ) {
                returnează 302 /nextcloud/remote.php/webdav/$is_args$args;
            }
        }

        locație ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|date)(?:$|/) { return 404; }
        locație ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }

        locație ~ \.php(?:$|/) {
            rescrie ^/nextcloud/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+ |.+\/richdocumentscode\/proxy) /nextcloud/index.php$request_uri;

            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            setați $path_info $fastcgi_path_info;

            try_files $fastcgi_script_name =404;

            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $path_info;

            fastcgi_param modHeadersAvailable true; # Evitați trimiterea antetelor de securitate de două ori
            fastcgi_param front_controller_active true; # Activați URL-uri frumoase
            fastcgi_pass php-handler;

            fastcgi_intercept_errors activat;
            fastcgi_request_buffering dezactivat;

            fastcgi_max_temp_file_size 0;
        }

        locație ~ \.(?:css|js|svg|gif|png|jpg|ico|wasm|tflite)$ {
            try_files $uri /nextcloud/index.php$request_uri;
            expiră 6M; # Politica Cache-Control împrumutată de la `.htaccess`
            access_log off; # Opțional: nu înregistrați accesul la active

            locație ~ \.wasm$ {
                aplicație de tip_implicit/wasm;
            }
        }

        locație ~ \.woff2?$ {
            try_files $uri /nextcloud/index.php$request_uri;
            expiră 7d; # Politica Cache-Control împrumutată de la `.htaccess`
            access_log off; # Opțional: nu înregistrați accesul la active
        }

        locație /nextcloud/remote {
            returnează 301 /nextcloud/remote.php$request_uri;
        }

        locație /nextcloud {
            try_files $uri $uri/ /nextcloud/index.php$request_uri;
        }
    }
}

Problema este că această configurație nu funcționează. Cu această configurație, primesc un 404 când încerc să accesez /nextcloud/.

Dacă dezactivez blocul serverului de fișiere statice în nginx.conf, pot accesa /nextcloud/, dar apoi nu pot accesa fișierele mele statice. Cum configurez astfel încât ambele să funcționeze, pe aceeași gazdă și același port?

Puncte:0
drapel us

Trebuie să le configurați pe ambele în același Server bloc.

Când nginx primește o solicitare, selectează gazda virtuală de utilizat pe baza HTTP Gazdă antet în cerere și numărul portului.

Configurația dvs. actuală va servi nextcloud dacă ați accesat serviciul folosind http://nextcloud/nextcloud, cu condiția să aveți DNS configurat corect pentru nextcloud Nume.

Ceea ce probabil doriți este ceva de genul acesta în configurația dvs. nginx:

lucrător_procese 8;

evenimente {
    conexiuni_muncitor 1024;
}

http {
    include mime.tipuri;
    aplicație de tip_default/octet-stream;
    sendfile activat;
    keepalive_timeout 65;

    Server {
        asculta 80 http2;
        asculta [::]:80 http2;
        nume_server gazdă locală;
        rădăcină /srv/http/;
        Locație / {
            index index.html index.php;
            try_files $uri $uri/ =404;
            autoindex activat;
        }
        
        locație /nextcloud {
            ...
        }

        pagina_eroare 500 502 503 504 /50x.html;
        locație = /50x.html {
            root /usr/share/nginx/html;
        }
    }
    includ /etc/nginx/sites-enabled/*;
}

Și eliminând cealaltă configurație.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.