Standalone nginx servers and wordpress don’t mix

links
nginx
rants

(Ionuț Staicu) #1

Cred că e cel mai anti-ceva articol citit vreodată de mine :smiley:

Din păcate, nu mă pricep foarte mult la servere pentru a testa validitatea afirmațiilor, dar majoritatea articolului se învârte în jurul lipsei .htaccess - problemă de care m-am lovit și eu de câteva ori pe site-urile clienților.

https://www.redsandmarketing.com/blog/nginx-servers-wordpress-dont-mix/


(István F.) #2

Problemele aduse la cunoștiință sunt oarecum valide, cu .htaccess ai mură în gură, dar nu înseamnă că un administrator/programator cu experiență nu poate configura wordpress să meargă la fel de bine cu nginx.

Pentru wordpress întradevăr e recomandabil nginx + apache sau Litespeed. PHP-FPM oricum nu e la fel de rapid cu nginx, doar că e mai stabil.
Dacă e vorba de un site mic, fără un administrator oricum recomand apache, va rula perfect cu ultima versiune.

Nginx în sine nu are nici o problemă, eu îl pot configura fără să existe probleme semnificative, respectiv la cât de des trebuie să faci modificări în htaccess la un blog/magazin n-ai treabă.
Am pățit o dată că am lăsat la un site fișierele din temă publice cu el, de atunci verific mereu totul de 2 ori.


(Mihai Nica) #3

Bullshit. Da, nginx nu are .htaccess intenționat, dar tot ce ai pune într-un fisier .htaccess poți pune în fișierul de configurare pentru vhostul respectiv (ca plus ai totul într-un singurul loc, nu trebuie să umbli prin toate folderele proiectului să cauți o setare anume; ca minus trebuie să dai reload la server după fiecare modicare).

Ca exemplu de argument stupid o să las asta aici:

Yes, Nginx can provide rewrites and redirection in its configuration at a server level, but it cannot be done at a directory level…so this is not the same at all.

Nginx location permite setări în funcție de cale.


(George Jipa) #4

Sa fim seriosi, articolul a fost scris ca sa capete shares… eventual sa ajunga viral si sa castige niste clienti speriati ca nginx le nenoroceste viitorul.

Da, nginx nu e bun pt WP daca nu esti in stare sa-l folosesti/configurezi. E mai usor sa folosesti Apache, pt ca dai un search pe Goagal, gasesti niste balarii/directive scrise de altii pe stackoverflow (sau in alta parte), habar nu ai ce fac, dar dai copy-paste in .htaccess si ai impresia ca toate-s bune si frumoase.
Pe cand atunci cand folosesti nginx… trebuie sa gandesti, sa citesti documentatie inainte sa faci ceva nou, nu e pentru oricine.


(Marius Lucian NEAG) #5

Am încercat să citesc articolul dar nu am putut din cauza tonului. L-am scanat și nu am găsit nimic altceva în afară de afirmații subiective de om frustrat că înțelege cum se lucrează cu nginx.

Concluziile articolului sunt:

  • Damage your website’s security and open yourself up to hacking
  • Damage your site’s performance and load speed
  • Damage your website’s search engine optimization
  • Increase your website development costs exponentially

Care sunt adevărate doar dacă nu știi să configurezi nginx-ul.

Nu lucrez cu WordPress, dar consider nginx-ul superior Apache-ului când vine vorba de performanță și flexibilitate. Să folosește Apache pentru site-uri medii spre mari mi se pare risipă de resurse.


#6

Buna! Am mai multe proiecte personale pe care doresc sa le gazduiesc pe un VPS cu LEMP. Nu am nici un nume de domeniu achizitionat, folosesc adresa IP. Pot sa configurez nginx numai prin contextul location? Mentionez ca este vorba de pagini web dinamice.


#7

Eu unul nu inteleg ce vrei sa spui prin “numai prin contextul location”, dar cred ca ai nevoie de ceva de genul asta.

server {
    listen       80;
    server_name  ip-ul tau

    location /site1 {
        root   /var/www/html/site1;
        index.php index  index.html index.htm;

        # instructiuni try_files / rewrite 
    }
    
    location /site2 {
        root   /var/www/html/site2;
        index.php index  index.html index.htm;
    }

    ..
    ..
}

#8

Am incercat. Primesc eroare 404 Page not found. Chiar daca exista fisierul index.php in calea descrisa in root.
Acum ma straduiesc sa deslusesc expresialocation ~ \.php$. Inteleg ca se refera la toate fisierele cu extensia php. As dori sa o rescriu pentru fiecare site in parte, si nu stiu cum.


#9

Pune continutul aici, fara ip.


#10
server {
        listen 80;
        listen [::]:80;
        server_name my_ip;
       

         location /project1 {
                root /var/www/my_projects/project1/public;
                 index index.php index.htm index.html;
                try_files $uri $uri/ /index.php?$query_string;
         }
         location /project2 {
                root /var/www/my_projects/project2/public;
                index index.php index.htm index.html;
                try_files $uri $uri/ /index.php?$query_string;
         }

           location ~ \.php$ {
  # lipseste directiva root 
                 include snippets/fastcgi-php.conf;
                 fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            }
       
         location ~ /\.ht {
                deny all;
                 }
        }

Am incercat

location ~^/project1/.+\.php$ {
        root /var/www/my_projects/project1/public;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~^/project2/.+\.php$ {
        root /var/www/my_projects/project2/public;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

Am primit mesaj de eroare Page not found de la framework


#11

In error.log ce zice?
Probabil te-ai incurcat in rute, nu-mi dau seama.


#12

Unable to open primary script: /usr/share/nginx/html/index.php
Am rezolvat, insa aceasta eroare cu

 location ~\.php$ {
                 set $php_root /var/www;
                 if ($request_uri ~ \/project1$) {
                           set $php_root /var/www/my_projects/project1/public;
    }

                 include snippets/fastcgi-php.conf;
                 fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                 fastcgi_param  SCRIPT_FILENAME  $php_root$fastcgi_script_name;
                 include /etc/nginx/fastcgi_params;
}

(cosmos) #13

O idee
Incerca sa vezi la permisiuni.

Acum am vazut ca ai rezolvat. :slight_smile:


#14

:slight_smile: acum eroarea page not found este returnata de framework.
-rw-r–r-- 1 root www-data 1823 Jan 24 10:38 index.php


#15

Am reusit pana la urma!

location ^~ /project1{
                alias /var/www/my_projects/project1/public;
                index index.php;
                try_files $uri $uri/ @project1;
            location ~ \.php {
                    include snippets/fastcgi-php.conf;
                    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                    fastcgi_param SCRIPT_FILENAME $request_filename;
                    include /etc/nginx/fastcgi_params;
                    }
     }

            location @project1 {
                    rewrite /project1/(.*)$ /project1/index.php?/$1 last;
    }

(Caezsar Matei) #16

Si cum procedezi cand faci hosting? II dai clientului drepuri de a modifica fisierele de configurare din Nginx? In anumite teste pentru configurari dinamice, Nginx cu PHP-FPM este sub Apache cu mod-php ca viteza de servire a paginilor. Intr-adevar pe partea de static content este superior! Memoriea RAM este un issue in zilele noastre? Sa nu uitam ca acum oricand poti mari memoria RAM intr-un VPS aprope instant…sa nu mai vb de bare-metal…unde exista servere cu 1TB de RAM! Deci daca vb de consum de resurse RAM, discutia chiar nu isi are rostul! Intr-adevar, Nginx este un server destul de robust si stabil, dar sa spunem ca este net superior fata de alte servere web ar fi incorect! Doar ca in ultima perioada Nginx beneficiaza de o reclama extrem de agresiva! De ce nu vad comparatii si intre Nginx si lighthttpd, care are un consum de resurse mai redus decat Nginx!


(Mihai Nica) #17

Amesteci mere cu pere. Vorbești de shared hosting (cel mai ieftin tip de hosting), după care treci la VPS (care de cele mai multe ori sunt unmanaged ca să fie mai ieftine, deci primesti root access) și ajungi la bare metal cu 1TB de ram unde sunt deja în altă ligă.
Da, în ziua de astăzi ai la dispoziție mult RAM, dar nu e gratis (nici macar neglijabil).

Sincer eu am ajuns la Nginx pentru datorită avantajelor oferite de PHP-FPM vs mod_php. Poți rula și Apache cu PHP-FPM dar setup-ul este mai simplu cu Nginx.