[Решено] 502 Bad Gateway

Статус
В этой теме нельзя размещать новые ответы.

webmaster315

Проверенные
Сообщения
69
Решения
2
Реакции
2
Баллы
65
Доброго времени суток. Занимался конфигурированием nginx и после решил проверить работоспособность сайта, сначала мне выдавало постоянно стандартную страницу nginx, а после конфигураций /etc/nginx/sites-available/default у меня стал появляться 502 Bad Gateway. Возможно уже есть подобные страницы на форуме, но я не нашёл и не увидел. Подскажите, пожалуйста, в чём проблема.1762088665243.pngВ root находилось сначала /var/www/html и оно выводило на стандартную страницу nginx, а как только поменял на /var/www/xenforo начало выдавать то, что на скриншоте.

Я впервые ставлю форумы на хостинги, до этого ставил в OSpanel и там было всё нормально.
OS: debian 13
PHP: php8.4-fpm
 
Последнее редактирование:
Решение
1. всё было почти окей кроме бардака в конфиге вирт. хоста, прописал корректный путь к сокету, вместо айпишника
2. для воркеров пхп-фпм зачем-то поменяли юзера, вернул на www-data
3. сменил рекурсивно владельца файлов движка так же на www-data

ещё добавлю что всякие моментики по безопасности в конфиг я не дописывал, нужно перекрыть доступ к src/internal_data, по примеру как указано в документации движка
Everlast, я поменял root, добавил в index index.php, server_name оставил _, а потом по данной теме XF 2.3 - Установка xenforo 2.3.7 в nginx location изменяя /xf/ на свой путь /var/www/xenforo, но увы не работает почему-то 🤔
 
nginx location изменяя /xf/ на свой путь /var/www/xenforo
И не будет работать, потому что при такой настройке оно ожидает запрос example.com/var/www/xenforo
 
Everlast, я поменял root, добавил в index index.php, server_name оставил _, а потом по данной теме XF 2.3 - Установка xenforo 2.3.7 в nginx location изменяя /xf/ на свой путь /var/www/xenforo, но увы не работает почему-то 🤔
В самом nginx никакой location не вписывается, особенно чтобы читать корень сайта. Если дефолтом пользуешься (/etc/nginx/sites-available/default) вот что обычно должно быть:

Код:
server {
    listen 80;
    server_name твойip или домен; 
    
    root /var/www/xenforo;
    index index.php;

}

А лучше свой конфиг пришли.
 
php-fpm.conf
PHP:
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;


; All relative paths in this configuration file are relative to PHP's install
; prefix (/usr). This prefix can be dynamically changed by using the
; '-p' argument from the command line.


;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;


[global]
; Pid file
; Note: the default prefix is /var
; Default Value: none
; Warning: if you change the value here, you need to modify systemd
; service PIDFile= setting to match the value here.
pid = /run/php/php8.4-fpm.pid


; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; into a local file.
; Note: the default prefix is /var
; Default Value: log/php-fpm.log
error_log = /var/log/php8.4-fpm.log


; syslog_facility is used to specify what type of program is logging the
; message. This lets syslogd specify that messages from different facilities
; will be handled differently.
; See syslog(3) for possible values (ex daemon equiv LOG_DAEMON)
; Default Value: daemon
;syslog.facility = daemon


; syslog_ident is prepended to every message. If you have multiple FPM
; instances running on the same server, you can change the default value
; which must suit common needs.
; Default Value: php-fpm
;syslog.ident = php-fpm


; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice
log_level = debug


; Log limit on number of characters in the single line (log entry). If the
; line is over the limit, it is wrapped on multiple lines. The limit is for
; all logged characters including message prefix and suffix if present. However
; the new line character does not count into it as it is present only when
; logging to a file descriptor. It means the new line character is not present
; when logging to syslog.
; Default Value: 1024
;log_limit = 4096


; Log buffering specifies if the log line is buffered which means that the
; line is written in a single write operation. If the value is false, then the
; data is written directly into the file descriptor. It is an experimental
; option that can potentially improve logging performance and memory usage
; for some heavy logging scenarios. This option is ignored if logging to syslog
; as it has to be always buffered.
; Default value: yes
;log_buffering = no


; If this number of child processes exit with SIGSEGV or SIGBUS within the time
; interval set by emergency_restart_interval then FPM will restart. A value
; of '0' means 'Off'.
; Default Value: 0
emergency_restart_threshold = 10


; Interval of time used by emergency_restart_interval to determine when
; a graceful restart will be initiated.  This can be useful to work around
; accidental corruptions in an accelerator's shared memory.
; Available Units: s(econds), m(inutes), h(ours), or d(ays)
; Default Unit: seconds
; Default Value: 0
emergency_restart_interval = 1m


; Time limit for child processes to wait for a reaction on signals from master.
; Available units: s(econds), m(inutes), h(ours), or d(ays)
; Default Unit: seconds
; Default Value: 0
process_control_timeout = 10s


; The maximum number of processes FPM will fork. This has been designed to control
; the global number of processes when using dynamic PM within a lot of pools.
; Use it with caution.
; Note: A value of 0 indicates no limit
; Default Value: 0
process.max = 128


; Specify the nice(2) priority to apply to the master process (only if set)
; The value can vary from -19 (highest priority) to 20 (lowest priority)
; Note: - It will only work if the FPM master process is launched as root
;       - The pool process will inherit the master process priority
;         unless specified otherwise
; Default Value: no set
; process.priority = -19


; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging.
; Default Value: yes
daemonize = no


; Set open file descriptor rlimit for the master process.
; Default Value: system defined value
;rlimit_files = 1024


; Set max core size rlimit for the master process.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
;rlimit_core = 0


; Specify the event mechanism FPM will use. The following is available:
; - select     (any POSIX os)
; - poll       (any POSIX os)
; - epoll      (linux >= 2.5.44)
; - kqueue     (FreeBSD >= 4.1, OpenBSD >= 2.9, NetBSD >= 2.0)
; - port       (Solaris >= 10)
; Default Value: not set (auto detection)
events.mechanism = epoll


; When FPM is built with systemd integration, specify the interval,
; in seconds, between health report notification to systemd.
; Set to 0 to disable.
; Available Units: s(econds), m(inutes), h(ours)
; Default Unit: seconds
; Default value: 10
;systemd_interval = 10


;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;


; Multiple pools of child processes may be started with different listening
; ports and different management options.  The name of the pool will be
; used in logs and stats. There is no limitation on the number of pools which
; FPM can handle. Your system will tell you anyway :)


; Include one or more files. If glob(3) exists, it is used to include a bunch of
; files from a glob(3) pattern. This directive can be used everywhere in the
; file.
; Relative path can also be used. They will be prefixed by:
;  - the global prefix if it's been set (-p argument)
;  - /usr otherwise
include=/etc/php/8.4/fpm/pool.d/*.conf

nginx.conf
NGINX:
user www-data;
worker_processes auto;
worker_cpu_affinity auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;


events {
        worker_connections 768;
        # multi_accept on;
}


http {


        ##
        # Basic Settings
        ##


        sendfile on;
        tcp_nopush on;
        types_hash_max_size 2048;
        server_tokens off; # Recommended practice is to turn this off


        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;


        include /etc/nginx/mime.types;
        default_type application/octet-stream;


        ##
        # SSL Settings
        ##


        ssl_protocols TLSv1.2 TLSv1.3; # Dropping SSLv3 (POODLE), TLS 1.0, 1.1
        ssl_prefer_server_ciphers off; # Don't force server cipher order.


        ##
        # Logging Settings
        ##


        access_log /var/log/nginx/access.log;


        ##
        # Gzip Settings
        ##


        gzip on;


        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;


        ##
        # Virtual Host Configs
        ##


        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
        include /etc/nginx/site-available/*;
}




#mail {
#       # See sample authentication script at:
#       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#       # auth_http localhost/auth.php;
#       # pop3_capabilities "TOP" "USER";
#       # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#       server {
#               listen     localhost:110;
#               protocol   pop3;
#               proxy      on;
#       }
#
#       server {
#               listen     localhost:143;
#               protocol   imap;
#               proxy      on;
#       }
#}

/etc/nginx/sites-available/default
NGINX:
server {
        listen 80;
        listen [::]:80;


        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;


        root /var/www/xenforo/;


        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm;


        server_name _;


        location /var/www/xenforo/ {
                try_files $uri $uri/ /xf/index.php?$uri&$args;
                index index.php index.html;
        }


        location ^~ /var/www/xenforo/install/data/ {
                internal;
        }
        location ^~ /var/www/xenforo/install/templates/ {
                internal;
        }
        location ^~ /var/www/xenforo/internal_data/ {
                internal;
        }
        location ^~ /var/www/xenforo/library/ { #legacy
                internal;
        }
        location ^~ /var/www/xenforo/src/ {
                internal;
        }


        location ~ [^/]\.php(/|$) {
                fastcgi_split_path_info ^(.+?\.php)(/.*)$;
                if (!-f $document_root$fastcgi_script_name) {return 404;}
                fastcgi_param HTTP_PROXY "";
                include fastcgi_params;
                fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $request_filename;
        }




        #s PHP scripts to FastCGI server
        #
        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;


        #       # With php-fpm (or other unix sockets):
        #       fastcgi_pass unix:/run/php/php8.4-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        #}


        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}




# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
#       listen 80;
#       listen [::]:80;
#
#       server_name example.com;
#
#       root /var/www/example.com;
#       index index.html;
#
#       location / {
#               try_files $uri $uri/ =404;
#       }
#}
 
webmaster315, Можно вопрос? Откуда столько всего лишнего в конфиге сайта?
Я если что про лишние и неправильные настройки. Если нравится закомментированный текст, оставь его, а так попробуй такой вариант, только добавь server_name.
Код:
server {
        listen 80;
        listen [::]:80;


        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;


        root /var/www/xenforo/;


        # Add index.php to the list if you are using PHP
        index index.php index.html;


        server_name сюдасвойдоменилиайпиеслинетудомена;




        location ~ [^/]\.php(/|$) {
                fastcgi_split_path_info ^(.+?\.php)(/.*)$;
                if (!-f $document_root$fastcgi_script_name) {return 404;}
                fastcgi_param HTTP_PROXY "";
                include fastcgi_params;
                fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $request_filename;
        }




        #s PHP scripts to FastCGI server
        #
        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;


        #       # With php-fpm (or other unix sockets):
        #       fastcgi_pass unix:/run/php/php8.4-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        #}


        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}




# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
#       listen 80;
#       listen [::]:80;
#
#       server_name example.com;
#
#       root /var/www/example.com;
#       index index.html;
#
#       location / {
#               try_files $uri $uri/ =404;
#       }
#}
 
Последнее редактирование:
Everlast, если речь про sites-available/default, то отсюда XF 2.3 - Установка xenforo 2.3.7
Запреты организовываются в более простой и привлекательной манере, если необходимо делать через nginx.
location /internal_data/ { deny all; }

Для ЧПУ ссылок, этого достаточно.

Код:
location / {
        try_files $uri $uri/ /index.php?$uri&$args;
    }

У себя добавь то что Выше написал, а так вроде всё должно работать.
 
Запреты организовываются в более простой и привлекательной манере, если необходимо делать через nginx.
location /internal_data/ { deny all; }

Для ЧПУ ссылок, этого достаточно.

Код:
location / {
        try_files $uri $uri/ /index.php?$uri&$args;
    }

У себя добавь то что Выше написал, а так вроде всё должно работать.
сделал так
добавил в server_name свой IP и всё равно 502 Bad Gateway
 
Трудно и долго так через чат 😅 Попробуй свой:
Код:
location ~ [^/]\.php(/|$) {
                fastcgi_split_path_info ^(.+?\.php)(/.*)$;
                if (!-f $document_root$fastcgi_script_name) {return 404;}
                fastcgi_param HTTP_PROXY "";
                include fastcgi_params;
                fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $request_filename;
        }

Заменить на:

Код:
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

И соответственно:
sudo systemctl reload nginx
sudo systemctl restart php8.4-fpm
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу