Puncte:0

În schimb, redirecționările Nginx http la https descarcă fișierul gol

drapel tm

Încerc să-mi redirecționez Laravel+vuejs+nuxtjs proiect de la http la https dar când intru http://example.com sau http://www.example.com în schimb, se descarcă un fișier gol

Ce am facut pana acum:

1- Comentând aplicație tip_implicit/flux-octet si adaugand default_type text/html în schimb în nginx.conf

2-definitoriu tipuri { } default_type "text/plain"; în Locație /{} din exemplul.com.conf

Redirecționare 3-nginx cu codul de mai jos

Server{
  asculta xx.xx.xx.xx:80;
    server_name example.com www.example.com;
  returnează 301 https://www.example.com$request_uri;
}

4- am încercat să îl redirecționez cu un fișier .php cu următorul fișier example.com.conf:

       Server {
          asculta 37.152.191.249:80;
          server_name www.example.com example.com;

         access_log /usr/local/apache/domlogs/example.com.bytes octeți;
        access_log /usr/local/apache/domlogs/example.com.log combinat;
        error_log /usr/local/apache/domlogs/example.com.error.log eroare;

        root /home/example/public_html/;
        index index.php;

   Locație / {
tipuri { } default_type "text/plain";
    try_files $uri $uri/ /index.php?$query_string;

}

locație ~ \.php$ {
   fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_intercept_errors dezactivat;
    fastcgi_buffer_size 16k;
    fastcgi_buffers 4 16k;
    fastcgi_connect_timeout 300;
   fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
}


        locație ~* "/\.(htaccess|htpasswd)$" {deny all;return 404;}

        disable_symlinks if_not_owner from=/home/example/public_html;
}

index.php în codul public_html :

    $locație = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    header('HTTP/1.1 301 Mutat permanent');
    header('Locație: ' . $locație);
    Ieșire;

Nimic din cele de mai sus nu a funcționat și problema încă persistă.

+Configurații curente:

raport nginx -t:

nginx: sintaxa fișierului de configurare /etc/nginx/nginx.conf este ok
nginx: fișierul de configurare /etc/nginx/nginx.conf testul a reușit

example.com.ssl.conf :

Server{
  asculta xx.xx.xx.xx:443 http2 ssl;
    nume_server example.com;
        ssl_certificate /etc/pki/tls/certs/example.com.bundle;
        ssl_certificate_key /etc/pki/tls/private/example.com.key;
        ssl_protocols TLSv1.2;
        ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EE3CDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:DHECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:DHEECDH+ECDSA:aRSA!a! :!eN$
        ssl_prefer_server_ciphers activat;

       ssl_session_cache shared:SSL:10m;
       ssl_session_timeout 60m;
       returnează 301 https://www.example.com$request_uri;
}
       Server {
          asculta xx.xx.xx.xx:443 http2 ssl;
          nume_server www.example.com;

         access_log /usr/local/apache/domlogs/example.com.bytes octeți;
        access_log /usr/local/apache/domlogs/example.com.log combinat;
        error_log /usr/local/apache/domlogs/example.com.error.log eroare;
        ssl_certificate /etc/pki/tls/certs/example.com.bundle;
        ssl_certificate_key /etc/pki/tls/private/example.com.key;
        ssl_protocols TLSv1.2;
        ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ERSA!a:RCULL:! :!eN$
        ssl_prefer_server_ciphers activat;

        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 60m;

        root /home/example/core/public/;
        index index.php;

   Locație / {
  proxy_set_header Conexiune „upgrade”;
    proxy_http_versiunea 1.1;
    proxy_pass https://xx.xx.xx.xx:3000$uri;
    proxy_intercept_errors on;# Pentru a utiliza directiva error_page, aceasta trebuie să fie activată
    error_page 404 = @php;
}

locație @php {
    try_files $uri $uri/ /index.php?$query_string;

}

locație ~ \.php$ {
   fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_intercept_errors dezactivat;
    fastcgi_buffer_size 16k;
    fastcgi_buffers 4 16k;
    fastcgi_connect_timeout 300;
   fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
}


        locație ~* "/\.(htaccess|htpasswd)$" {deny all;return 404;}

        disable_symlinks if_not_owner from=/home/example/public_html;

        locație /.well-cunoscut/acme-challenge {
                default_type "text/plain";
                alias /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
        }

        locație /.well-cunoscut/pki-validation {
                default_type "text/plain";
                alias /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
        }
}


Exemplul curent.com.conf :

Server{
  asculta xx.xx.xx.xx:80;
    nume_server example.com www.example.com;
  returnează 301 https://www.example.com$request_uri;
}

Nu am adăugat raportul nginx -T, deoarece arată fișiere de configurare irelevante de pe alte site-uri web.

De asemenea, serverul rulează mai multe site-uri și cele wordpress nu au nicio problemă la redirecționare folosind codul furnizat la #3 pentru redirecționare dar când vine vorba de THE pe site care folosește nuxtjs, primesc un fișier gol descărcat.

Orice ajutor ar fi foarte apreciat

drapel us
Nu trebuie să schimbați deloc tipurile MIME pentru redirecționare. Sunteți sigur că `example.com.conf` dvs. are `server_name` corect? Este fișierul `example.com.conf` vizibil în `nginx -T`?
Pc Monk avatar
drapel tm
Da, este vizibil în nginx -T. L-am verificat de câteva ori. (după fiecare modificare). Și sunt de acord cu tine, schimbarea tipului MIME nu este necesară, dar a meritat o încercare pentru a fi transmisă la php-fpm în loc să fie descărcată.
drapel us
Sunteți sigur că adresa IP din directiva „ascultă” este corectă? Dacă adresa nu se potrivește, atunci nginx nu va folosi această gazdă virtuală.
Puncte:1
drapel tm

Am copiat una dintre configurațiile mele wordpress nginx și am înlocuit xxx parte cu numele domeniului și aaa cu IP-ul serverului

Server {
        asculta ayy.yyy.yyy.yyy:80;
        nume_server xxx.com www.xxx.com;
  returnează 301 https://xxx$request_uri;

        Locație / {
                try_files $uri $uri/ /index.php?$args;
                add_header Strict-Transport-Security "max-age=31536000";
                add_header X-XSS-Protection „1; mod=bloc” întotdeauna;
                add_header X-Content-Type-Options „nosniff” întotdeauna;

                locație ~.*\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
                        expira max;
                }

                locație ~ [^/]\.php(/|$) {
                        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                        dacă (!-f $document_root$fastcgi_script_name) {
                                întoarce 404;
                        }

                        fastcgi_pass 127.0.0.1:9000;
                        fastcgi_index index.php;
                        includ /etc/nginx/fastcgi_params;
                }

        }

        locație ~* "/\.(htaccess|htpasswd)$" {deny all;return 404;}


        disable_symlinks if_not_owner from=/home/domainname/public_html;

        locație /.well-cunoscut/acme-challenge {
                default_type "text/plain";
                alias /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
        }

        locație /.well-cunoscut/pki-validation {
                default_type "text/plain";
                alias /usr/local/apache/autossl_tmp/.well-known/acme-challenge;
        }
}

Este redirecționat către https fără a descărca nimic, am derulat toate modificările pe care le-am făcut la nginx și php-fpm la implicit.

Acum funcționează, dar de ce?

după ce am jucat, am observat schimbarea locației configurației nginx de lucru în locație ~ \.php$ (cel pe care îl foloseam înainte) va face ca problema să revină.

Nicio investigație suplimentară de ce locație ~ \.php$ face NU munca dar locație ~ [^/]\.php(/|$) face.

Sper ca ajuta.

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.