nginx + phpfpm

Ответить
Аватара пользователя
mexan
Репутация: 5
Сообщения: 122
Зарегистрирован: 22 июн 2016, 18:15
Сайт

#1 Сообщение mexan » 26 окт 2017, 13:53

Блин... я уже замучался в попытках настроить конфиг под данную связку. Точнее не идет установка, ошибка 404... Я даже на Xenforo так не мучался, как тут...

Может кто поделится секретом!
Вот мой конфиг:

Код: Выделить всё

server {
    listen      194.67.194.222:80;
    server_name САЙТ www.САЙТ;
    root        /home/ИМЯ/web/САЙТ/public_html;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/САЙТ.log combined;
    access_log  /var/log/nginx/domains/САЙТ.bytes bytes;
    error_log   /var/log/nginx/domains/САЙТ.error.log error;
	
	
	if ($request_uri ~ "^/index.(php|html?)") {
    rewrite ^ /$1 permanent;
    }
	
	

    location / {

        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
        }

        location ~ [^/]\.php(/|$) {
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }

            fastcgi_pass    127.0.0.1:9004;
            fastcgi_index   index.php;
            include         /etc/nginx/fastcgi_params;
        }
    }
	
	error_page  403 /error/404.html;
    error_page  404 /error/404.html;
    error_page  500 502 503 504 /error/50x.html;

    location /error/ {
        alias   /home/ИМЯ/web/САЙТ/document_errors/;
    }

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

    location /vstats/ {
        alias   /home/ИМЯ/web/САЙТ/stats/;
        include /home/ИМЯ/web/САЙТ/stats/auth.conf*;
    }
	
	
	
	include     /etc/nginx/conf.d/phpmyadmin.inc*;
    include     /etc/nginx/conf.d/phppgadmin.inc*;
    include     /etc/nginx/conf.d/webmail.inc*;

    include     /home/ИМЯ/conf/web/nginx.САЙТ.conf*;
}
Я уже весь инет перерыл:
http://area51.phpbb.com/phpBB/viewtopic.php?t=49426
https://github.com/phpbb/phpbb/pull/419 ... 428a4fbb4b
https://www.phpbbguru.net/community/vie ... hp?t=46434
https://github.com/phpbb/phpbb/blob/mas ... ample.conf
и так далее...

Sumanai
Администратор
Репутация: 19
Сообщения: 143
Зарегистрирован: 11 июн 2016, 21:01

#2 Сообщение Sumanai » 26 окт 2017, 18:44

Код: Выделить всё

            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }
Ну конечно, если отдавать 404 на все отсутствующие файлы, то и будет 404 на странице установки, которая использует реврайты.
Не знаю, зачем столько перерывать, когда конфиги есть в каталоге документов.
В общем ключевое тут

Код: Выделить всё

        location / {
            # phpBB uses index.htm
            index index.php index.html index.htm;
            try_files $uri $uri/ @rewriteapp;
        }

        location @rewriteapp {
            rewrite ^(.*)$ /app.php/$1 last;
        }
        # Correctly pass scripts for installer
        location /install/ {
            # phpBB uses index.htm
            try_files $uri $uri/ @rewrite_installapp;

            # Pass the php scripts to fastcgi server specified in upstream declaration.
            location ~ \.php(/|$) {
                # Unmodified fastcgi_params from nginx distribution.
                include fastcgi_params;
                # Necessary for php.
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                fastcgi_param DOCUMENT_ROOT $realpath_root;
                try_files $uri $uri/ /install/app.php$is_args$args;
                fastcgi_pass php;
            }
        }

        location @rewrite_installapp {
            rewrite ^(.*)$ /install/app.php/$1 last;
        }
        
в корне server.
А вообще я использую следующую конфигурацию

Код: Выделить всё

server {
	listen @IPv4@:80;

#	Uncomment if have IPv6
#	listen [@IPv6@]:80;

#	Uncomment if have SSL
#	listen 193.124.179.231:443 ssl http2;
#	listen [::]:443 ssl http2;

	server_name @site_name@ www.@site_name@;

	error_log	/var/log/nginx/@site_name@_error.log;
	access_log	/var/log/nginx/@site_name@_access.log;

#	Uncomment if have SSL
#	ssl_certificate /etc/letsencrypt/live/@site_name@/fullchain.pem;
#	ssl_certificate_key /etc/letsencrypt/live/@site_name@/privkey.pem;
#	ssl_trusted_certificate /etc/letsencrypt/live/@site_name@/fullchain.pem;
#	add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

	root	/var/www/@site_name@/;

	location / {
		index	index.php index index.html index.htm;

		location = /favicon.ico {
			access_log	off;
			expires		7d;
			etag		off;
		}

		# Rewrite
		try_files $uri $uri/ /app.php?$query_string;

		# Rewrite to install
		location /install/ {
			try_files $uri $uri/ /install/app.php?$query_string;
		}

		# Ban bad requests
		location = /config.php {
			deny	all;
		}
		location = /common.php {
			deny	all;
		}
		location ~ /\. {
			access_log		off;
			log_not_found	off;
			deny			all;
		}

		# Cache static
		location ~* ^.+\.(jpg|jpeg|gif|png|css|pdf|ppt|txt|bmp|rtf|js)$ {
			access_log	off;
			expires		7d;
			etag		off;
		}

		location ~ \.php$ {
			include			fastcgi_params;

			# Select connection method and add true data
			fastcgi_pass    127.0.0.1:9000;
			# fastcgi_pass	unix:/run/php/php7.0-fpm.sock;

			fastcgi_split_path_info ^(.+\.php)(/.*)$;
			fastcgi_param PATH_INFO $fastcgi_path_info;
			fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
			fastcgi_param DOCUMENT_ROOT $realpath_root;
		}

#		Uncomment if have LetsEncrypt SSL
#		location ~ /\.well-known {
#			allow           all;
#		}
	}
}
В нём заменить @IPv4@ на айпишник, @IPv6@ на айпишник 6 версии, если есть, @site_name@ на имя сайта. Сайты располагаются в /var/www/, но это легко изменить в одном месте. Так же комментариями помечены строки, которые нужно изменить, если нужен SSL, в моём случае бесплатный от LetsEncrypt.

Аватара пользователя
mexan
Репутация: 5
Сообщения: 122
Зарегистрирован: 22 июн 2016, 18:15
Сайт

#3 Сообщение mexan » 26 окт 2017, 19:19

Спасибо. Ща "помучаюсь" дальше. Почему я столько перерывал, потому что nginx не запускается.
Кстати, на офф сайте phpBB, уже жаловались разработчикам, типа почему нельзя это сделать в самом движке. Ты ж сделал в phpbbex.

Sumanai
Администратор
Репутация: 19
Сообщения: 143
Зарегистрирован: 11 июн 2016, 21:01

#4 Сообщение Sumanai » 26 окт 2017, 19:47

Я ничего в том плане не делал. phpBB 3.1 и основанный на нём 2.0 не требует для своей установки реврайты, а phpBB 3.2 требует, поэтому и не пашет без настроек. И не факт что я это смогу изменить. Хотя это мне тоже не нравится.

Аватара пользователя
mexan
Репутация: 5
Сообщения: 122
Зарегистрирован: 22 июн 2016, 18:15
Сайт

#5 Сообщение mexan » 27 окт 2017, 14:35

Получается, что выгоднее держать на сервере стандартную связку на апаче. Недаром хостинги ее и используют.

Sumanai
Администратор
Репутация: 19
Сообщения: 143
Зарегистрирован: 11 июн 2016, 21:01

#6 Сообщение Sumanai » 27 окт 2017, 20:41

С какого это перепуга? Всё прекрасно работает при должной настройке, которая описана в стандартных доках.

Ответить