Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2015-05-27 21:35:51

  Yampress - Imperator

Yampress
Imperator
Zarejestrowany: 2007-10-18

nginx i php

Tak sobie ostatnio testuje nginxa głębiej niż znam go normalnie i napotkałem problem. Czy ktoś już coś takiego robił??
[b]Chodzi to na apache bez problemu, na nginx niee....[/b] nie chce.

Otóż co chce zrobić:
Wpisuje w przeglądarce adres no i listuje mi się katalog... Są tam katalogi - skrypty php ..

/usr/local/www

skrypt_php1  - punbb
skrypt_php2   -dokuwiki
skrypt_php3  - phpbb3

autoindex on; działa
Tylko  kiedy wchodze w poszczególne katalogi - skrypty php;   php już nie działa....

php  zaimplemontowane przez php-fpm 


No nie działa na standardowej konfiguracji php w nginx


location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$script;
         include fastcgi_params
        }[/quote]
Jesli wpuszczam normalnie php na dany katalog np
root /usr/local/www/dokuwiki
gdzie od razu jest skrypt php to działa  ok.

jeśli wpuszczam poziom wyżej
root /usr/local/www  z autoindex nie działa z php w poszczególnych katalogach/skryptach...



Jakieś propozycje?

Offline

 

#2  2015-05-28 08:57:21

  mati75 - Psuj

mati75
Psuj
Skąd: default city
Zarejestrowany: 2010-03-14
Serwis

Re: nginx i php

Zmień:

Kod:

fastcgi_param  SCRIPT_FILENAME  $document_root$script;

na:

Kod:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

[img]https://l0calh0st.pl/obrazki/userbar.png[/img]

Offline

 

#3  2015-05-28 16:23:20

  Yampress - Imperator

Yampress
Imperator
Zarejestrowany: 2007-10-18

Re: nginx i php

nie ma różnicy....
Tu jest problem skonfigurowania tego php aby działał wszedzie, gdziekolwiek jest  index.php

Offline

 

#4  2015-05-28 16:43:27

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: nginx i php

Kod:

location ~ [^/]\.php(/|$) {    
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                if (!-f $document_root$fastcgi_script_name) {
                        return 404;
                }
          
            fastcgi_param   PATH_INFO         $fastcgi_path_info;
            fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi.conf;  ##Includes our fastcgi setup
            fastcgi_pass unix://var/run/php55.sock;  
            fastcgi_index index.php;
            }

WP, Prestashop, Phpbb3, Drupal7, FluxBB - wszystko na tym śmiga, na oddzielnych vhostach.

A to mój fastcgi.conf:

Kod:

fastcgi_param  PHP_ADMIN_VALUE    open_basedir=$document_root:/usr/share/php:/usr/share/php5:/var/spool/php:/tmp;
 
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  PATH_TRANSLATED      $document_root$fastcgi_path_info;
fastcgi_param  HOSTNAME           $http_host;


fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;
fastcgi_param  SSL_CIPHER         $ssl_cipher;
fastcgi_param  SSL_CLIENT_VERIFY  $ssl_client_verify;

fastcgi_param  REMOTE_USER                 $ssl_client_username if_not_empty;
fastcgi_param  SSL_CLIENT_COMMONNAME       $ssl_client_commonname if_not_empty;
fastcgi_param  SSL_CLIENT_EMAIL            $ssl_client_email if_not_empty;
fastcgi_param  SSL_CLIENT_S_DN_CN  $ssl_client_s_dn  if_not_empty;
fastcgi_param  SSL_CLIENT_I_DN_CN  $ssl_client_i_dn  if_not_empty;
                          
                         
                                   
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    Apache;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $http_host;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

SOA#1


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2015-05-28 16:53:51

  Yampress - Imperator

Yampress
Imperator
Zarejestrowany: 2007-10-18

Re: nginx i php

Jacekalex wdze ze php puszczasz po unix - socketach ...

Nie testowałem jeszcze tej możliwości


Każdy skrypt jako vhost?

Offline

 

#6  2015-05-28 17:12:57

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: nginx i php

Tak, po prostu wygodniej się ustawia redirecty dla poszczególnych skryptów, (nginx nie obrabia htacces), robię też vhosty administracyjne do skryptów chronienie autoryzacją SSL przez cert pkcs12/X509.

Cały WP:

Kod:

server {
        server_name blog.domena.tld;
        root /home/www/Wordpress4;
        listen 0.0.0.0:80;
        listen [::]:80;
         
         return 301  https://$http_host$request_uri;
         log_not_found off;
         access_log off;
}        
        
server {
        server_name blog.domena.tld;
        root /home/www/Wordpress4;
         listen 0.0.0.0:443;
         listen [::]:443;
        index index.php;
        
         ssl on;
               
        
        if ($request_uri ~ "^/\?wc-api" ) { return 418;}
        
         location ~ /(xmlrpc.php|wp-json) {
            return 418;}

       
        location / {
          #  include /etc/nginx/naxsi/nbs.rules;
            try_files $uri $uri/ /index.php?$args;
         }

        location  ~/wp-admin/  {
           return 301  https://admin.domena.tld$request_uri;
           log_not_found off; access_log off;}
           
         location  ~/wp-login.php  {
           return 301   https://admin.domena.tld$request_uri;
           log_not_found off; access_log off;}         

        location ~ /comments-post.php {
            include /etc/nginx/blacklist/sblamdrop.conf;
             error_page 403 = http://papa.domena.tld/;
             }
            
        access_log /var/log/nginx/wordpress_access_log combined buffer=32k;
        error_log /var/log/nginx/wordpress.ssl_error_log info;
         
        location ~ /wp-config.php {return 418; log_not_found off; access_log off;}
        location ~ ^/wp-includes/[^/]+\.php$ { return 418; log_not_found off; access_log off; } 
        location ~ ^/wp-includes/js/tinymce/langs/.+\.php { return 418; } 
        location ~ ^/wp-includes/theme-compat/ { return 418; }
        

        # antyhotlink + cache
         location ~ \.(jpg|jpeg|png|gif|ico|css|js)$ {
             valid_referers none block server_names ~(.domena.tld|google.);
                 if ($invalid_referer) {
         rewrite ^(.*)$ http://www.posters.ws/images/846697/i_love_porn.jpg;
           }
            expires 30d;
           }
       
        location ~ "/wp-content/.+\.(php|phps|txt|md|exe|bat|bin|msi)" { return 418;}
        location ~ “/wp-content/.(xml|css|jpeg|ico|png|gif|js|pdf)$” { allow all; log_not_found off;}


           
        location = /(favicon.ico|robots.txt|sitemap.xml) { log_not_found off; access_log off; }
 
        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
        
        location ~ [^/]\.php(/|$) {    
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                if (!-f $document_root$fastcgi_script_name) {
                        return 404;
                }
          
            fastcgi_param   PATH_INFO         $fastcgi_path_info;
            fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi.conf;  ##Includes our fastcgi setup
            fastcgi_pass unix://var/run/php55.sock;  
            fastcgi_index index.php;
            }    
          
        
}


server {
        server_name admin.domena.tld;
        root /home/www/Wordpress4;
         listen 0.0.0.0:443;
         listen [::]:443;
        index index.php;
        
        ssl on;
        ssl_verify_client optional; 
        ssl_verify_depth 5;
           if ( $ssl_client_verify != SUCCESS )
           {return 301 https://blog.domena.tld/index.php?status=403;}
    
 
        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
        
        location ~ [^/]\.php(/|$) {    
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                if (!-f $document_root$fastcgi_script_name) {
                        return 404;
                }
          
            fastcgi_param   PATH_INFO         $fastcgi_path_info;
            fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi.conf;  ##Includes our fastcgi setup
            fastcgi_pass unix://var/run/php55.sock;  
            fastcgi_index index.php;
            }    
        
}
 
server {
        server_name admin.domena.tld;
        root /home/www/Wordpress4;
        listen 0.0.0.0:80;
        listen [::]:80;
         
       
         return 301  https://$http_host$request_uri;
         log_not_found off;
         access_log off;
}

Przy okazji, jedną zmienną mam zrobione basediry w fastcgi.conf,
dla każdego skrypta działa to osobno.

php po socketach pozwala też łatwo robić takie cuda, jak kilka wersji php lub osobny demon php dla każdego pacjenta, i oczywiście uprawnienia i ACL  do socketów można ustawić, co na portach TCP nie jest zbyt proste do wykonania.

Pozdro

Ostatnio edytowany przez Jacekalex (2015-05-28 17:55:38)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2015-05-30 18:39:51

  Yampress - Imperator

Yampress
Imperator
Zarejestrowany: 2007-10-18

Re: nginx i php

no z vhostami to ładnie bryka, bo znam to rozwiązanie ale zleży mi na rozwiązaniu, które przedstawiłem na samej górze

autoindex głównego katalogu,
root    /usr/local/www;
a kolejny niższy poziom katalogów już bez autoindexa  z php..



/usr/local/www  #autoindex on
->   punbb   #/usr/local/www/punbb #php
->   dokuwiki #/usr/local/www/dokuwiki #php
->   phpbb3   #/usr/local/www/phpbb3 #php

Offline

 

#8  2015-05-30 18:53:15

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: nginx i php

Autoindex na głównym to bułka z masłem, a poszczególne projekty bym brał w znaczniki location i wywalał na poszczególne vhosty przez [b]return 301 http://cośtam.domena.tld/[/b].

Żadna magia. ;)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#9  2015-05-30 18:58:27

  Yampress - Imperator

Yampress
Imperator
Zarejestrowany: 2007-10-18

Re: nginx i php

bez domen. zabawa lokalna

pewne skrypty sobie lokalnie testuje.. wchodze po ip. mam je wyindexowane w katalogu głównym
Wchodze sobie w konkretny skrypt z katalogu głównego i ma działać w nim php.

Offline

 

#10  2015-05-30 19:03:50

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: nginx i php

To sobie zrób w /etc/hosts jakąś liną domenę z subdomenami.

Większość obecnych CMSów i tak musi mieć w konfigu jakaś domenę główną, żeby na nią przekierowywać wszystkie sznurki.

Jak chcesz na localhoście, żeby działało w folderze, to często trzeba wpisywać w konfigu skrypta domenę i ścieżkę względną, np Prestashop ani WP bez tego nie pójdą.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.008 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00013 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00098 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.222.78.65' WHERE u.id=1
0.00066 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.222.78.65', 1732779960)
0.00055 SELECT * FROM punbb_online WHERE logged<1732779660
0.00047 SELECT topic_id FROM punbb_posts WHERE id=287688
0.00057 SELECT id FROM punbb_posts WHERE topic_id=27440 ORDER BY posted
0.00060 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=27440 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00086 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=27440 ORDER BY p.id LIMIT 0,25
0.00100 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27440
Total query time: 0.00591 s