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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.




Imperator





Tak sobie ostatnio testuje nginxa głębiej niż znam go normalnie i napotkałem problem. Czy ktoś już coś takiego robił??
Chodzi to na apache bez problemu, na nginx niee.... 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
}
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




Psuj





Zmień:
fastcgi_param SCRIPT_FILENAME $document_root$script;
na:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

Offline




Imperator





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







Podobno człowiek...;)








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:
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
Offline




Imperator





Jacekalex wdze ze php puszczasz po unix - socketach ...
Nie testowałem jeszcze tej możliwości
Każdy skrypt jako vhost?
Offline







Podobno człowiek...;)








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:
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)
Offline




Imperator





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







Podobno człowiek...;)








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 return 301 http://cośtam.domena.tld/.
Żadna magia. ;)
Offline




Imperator





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







Podobno człowiek...;)








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ą.
Offline