Apache 2.4 + PHP-FPM + ProxyPassMatch

31

Ich habe kürzlich Apache 2.4 zusammen mit PHP 5.4.8 mit PHP-FPM auf meinem lokalen Rechner installiert.

Alles verlief reibungslos (nach einer Weile ...), aber es gibt immer noch einen merkwürdigen Fehler:

Ich habe Apache für PHP-FPM folgendermaßen konfiguriert:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1
</VirtualHost>

Es funktioniert zum Beispiel, wenn ich anrufe, http://localhost/info.phpbekomme ich die richtige phpinfo()(es ist nur eine Testdatei).

Wenn ich jedoch ein Verzeichnis aufrufe, erhalte ich eine 404 mit body File not found.und im Fehlerprotokoll:

[Tue Nov 20 21:27:25.191625 2012] [proxy_fcgi:error] [pid 28997] [client ::1:57204] AH01071: Got error 'Primary script unknown\n'

Aktualisieren

Ich habe jetzt versucht, das Proxying mit mod_rewrite durchzuführen:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"

    RewriteEngine on    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1 [L,P]
</VirtualHost>

Das Problem ist aber: Es wird immer umgeleitet, weil http://localhost/automatisch http://localhost/index.phpein angefordert wird, wegen

DirectoryIndex index.php index.html

Update 2

Ok, also denke ich "vielleicht zuerst prüfen, ob es eine Datei gibt, die dem Proxy übergeben werden kann:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"

    RewriteEngine on    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1 [L,P]
</VirtualHost>

Jetzt funktioniert das komplette Umschreiben nicht mehr ...

Update 3

Jetzt habe ich diese Lösung:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Users/apfelbox/WebServer"

    RewriteEngine on    
    RewriteCond /Users/apfelbox/WebServer/%{REQUEST_FILENAME} -f
    RewriteRule ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/Users/apfelbox/WebServer/$1 [L,P]
</VirtualHost>

Überprüfen Sie zuerst, ob es eine Datei gibt, die an PHP-FPM übergeben werden muss (mit dem vollständigen und absoluten Pfad), und führen Sie dann das Neuschreiben durch.

Dies funktioniert nicht, wenn das URL-Umschreiben in einem Unterverzeichnis verwendet wird. Bei URLs wie " http://localhost/index.php/test/ Also back to square one" schlägt dies ebenfalls fehl .


Irgendwelche Ideen?

apfelbox
quelle

Antworten:

34

Nach stundenlangem Durchsuchen und Lesen der Apache-Dokumentation habe ich eine Lösung gefunden, die es ermöglicht, den Pool zu verwenden und die Rewrite-Direktive in .htaccess auch dann zu verwenden, wenn die URL .php-Dateien enthält.

<VirtualHost ...>

 ...

 # This is to forward all PHP to php-fpm.
 <FilesMatch \.php$>
   SetHandler "proxy:unix:/path/to/socket.sock|fcgi://unique-domain-name-string/"
 </FilesMatch>

 # Set some proxy properties (the string "unique-domain-name-string" should match
 # the one set in the FilesMatch directive.
 <Proxy fcgi://unique-domain-name-string>
   ProxySet connectiontimeout=5 timeout=240
 </Proxy>

 # If the php file doesn't exist, disable the proxy handler.
 # This will allow .htaccess rewrite rules to work and 
 # the client will see the default 404 page of Apache
 RewriteCond %{REQUEST_FILENAME} \.php$
 RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f
 RewriteRule (.*) - [H=text/html]

</VirtualHost>

Gemäß der Apache-Dokumentation erfordert der SetHandler-Proxy-Parameter Apache HTTP Server 2.4.10.

Ich hoffe, dass diese Lösung auch Ihnen hilft.

FrancescoA
quelle
2
Dies ist definitiv die Antwort für 2015, alles andere ist Mist für ein modernes Setup (sagen wir Debian Stable)
Dmitri DB
1
Ich habe seit geraumer Zeit meinen Kopf gegen die Wand geschlagen und habe eine sehr ähnliche Konfiguration wie Sie. Würden Sie bitte Ihre .htaccess Rewrite-Anweisungen veröffentlichen? Soweit ich weiß, ist alles in dieser Antwort nur das, was Sie in Ihrer Datei httpd.d / site.conf haben.
David W
1
Im Moment scheint die Verwendung dieser RewriteRule ziemlich gefährlich zu sein, da sie config.php Dateien im Klartext verfügbar machen könnte, wenn sie sich in Alias-Verzeichnissen befinden und daher in% {DOCUMENT_ROOT} /% {REQUEST_URI} nicht vorhanden sind.
Zulakis
1
Erstaunliche 9 Codezeilen. Dies ist der heilige Gral und das einzige, was für mich zu 100% funktioniert. Nur eine Randnotiz: Wenn Sie mit LocationMatch von einer Lösung wechseln, müssen Sie den absoluten Dateipfad nicht an die fcgi-URL anhängen. Aktivieren Sie den Proxy und schreiben Sie die Anmeldung in Apache neu, um dies zu berücksichtigen.
Phil
1
+1, weil dieser Beitrag im Gegensatz zu jeder anderen Ressource, die ich gesehen habe, mir geholfen hat zu verstehen, was "eindeutige Domainnamen-Zeichenfolge" darstellen soll.
Dreizehn
10

Ich bin gestern auch auf dieses Problem gestoßen - Apache 2.4 ist von Debian / experimental nach Debian / unstable übergegangen und hat mich gezwungen, mit diesem neuen Zeug umzugehen; natürlich nicht auf unseren produktionsservern;).

Nachdem ich gelesen hatte, was sich wie Millionen von Websites anfühlt, Apache-Dokumente, Fehlerberichte und Debugging-Ausgaben im Fehlerprotokoll, habe ich es endlich zum Laufen gebracht. Nein, FPM mit Sockets wird noch nicht unterstützt. Die Standard-Debian-Konfiguration verwendet seit einiger Zeit Sockets, daher müssen auch Debian-Benutzer dies ändern.

Hier ist, was für eine CakePHP-Site und PHPMyAdmin funktioniert (letzteres benötigt allerdings eine Konfiguration, wenn Sie die Debian-Pakete verwenden), damit ich bestätigen kann, dass es mod_rewriteimmer noch wie erwartet funktioniert, um ausgefallene URLs umzuschreiben.

Beachten Sie DirectoryIndex index.php, dass möglicherweise keine Ihrer Konfigurationen für "Ordner" funktioniert hat (zumindest hat dies hier nicht funktioniert).

Ich bekomme immer noch File not found.für Verzeichnisse, aber nur wenn es keine Indexdatei gibt, kann es analysieren. Würde das auch gerne loswerden, aber es ist im Moment nicht so kritisch.


<VirtualHost *:80>
    ServerName site.localhost

    DocumentRoot /your/site/webroot
    <Directory />
            Options FollowSymlinks
            DirectoryIndex index.php
            AllowOverride All
            Require all granted
    </Directory>

    <LocationMatch "^(.*\.php)$">
            ProxyPass fcgi://127.0.0.1:9000/your/site/webroot
    </LocationMatch>

    LogLevel debug
    ErrorLog /your/site/logs/error.log
    CustomLog /your/site/logs/access.log combined
</VirtualHost>

Der obige vhost funktioniert perfekt mit einem .htaccess im root wie folgt:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

Ich verstehe aber nicht ganz, was du meinst URL rewriting inside a subdirectory(ich schreibe nur in die index.php des Roots).


(Oh, und Sie müssen sicherstellen, dass Xdebug nicht mit FPM auf Ihrem System in Konflikt steht, da diese standardmäßig dieselben Ports verwenden möchten.)

Alex
quelle
Dies ist eine gute Lösung, aber leider funktioniert dieser Ansatz nicht, wenn URLs mit .php neu geschrieben werden müssen, z. B. für WordPress Multisite. /ms_blog_1/wp-admin/load-scripts.php?blah=blah
Phil
Für mich hat das Hinzufügen eines Overrides DirectoryIndex index.htmlim fraglichen vhost das Problem behoben. Wenn ja DirectoryIndex index.php, dann scheinen andere PHP-Dateien den Fehler "Datei nicht gefunden" und "Primäres Skript unbekannt" zu verursachen. In meinem Fall habe ich index.htmlaber eine PHP-Datei test.php.
Geerlingguy
4

Alles was Sie tun müssen, ist einzustellen:

 ProxyErrorOverride on

Und vergessen Sie nicht, die Kundenseite wie folgt einzustellen:

ErrorDocument 404 /path/to/error_page_file    
Shiqi Zhong
quelle
2

Das habe ich. Es scheint in Ordnung zu funktionieren. Ich habe Drupal in ein Unterverzeichnis gestellt, und seine Umschreibungen, Verzeichnisindizes und PATH_INFO funktionieren.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} ^/((.*\.php)(/.*)?)$
RewriteCond %2 -f
RewriteRule . fcgi://127.0.0.1:9000/%1 [L,P]
RewriteOptions Inherit

Ich habe versucht, so etwas zu tun, ohne es neu zu schreiben ("If" und so weiter), aber ich konnte nichts zum Laufen bringen.

BEARBEITEN: Beachten Sie, dass dies ein Sicherheitsproblem sein kann, wenn Sie dies als Shared Hosting-Anbieter implementieren. Es würde Benutzern erlauben, PHP-Skripte an einen beliebigen fcgi-Proxy zu übergeben. Wenn Sie für jeden Benutzer einen eigenen Pool hätten, könnten Sie die Rechte für Angriffe erhöhen.

RockinRoel
quelle
2

Noch eine andere Lösung (benötigt Apache> = 2.4.10) - Im vhost:

# define worker
<Proxy "unix:/var/run/php5-fpm-wp.bbox.nuxwin.com.sock|fcgi://domain.tld" retry=0>
    ProxySet connectiontimeout=5 timeout=7200
</Proxy>

<If "%{REQUEST_FILENAME} =~ /\.php$/ && -f %{REQUEST_FILENAME}">
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    SetHandler proxy:fcgi://domain.tld
</If>

In diesem Fall wird der fcgi-Handler für PHP nur festgelegt, wenn die Datei vorhanden ist und der Name mit der PHP-Dateierweiterung übereinstimmt.

Übrigens: Für diejenigen, die die Idee haben, ProxyErrorOverride auf On zu setzen, ist dies eine wirklich schlechte Idee. Die Verwendung dieser Richtlinie ist nicht ohne Probleme. Beispielsweise würde jede PHP-Anwendung, die HTTP-Code wie 503 sendet, zu einem unerwarteten Ergebnis führen. Standardfehlerbehandlungsroutine würde in jedem Fall beteiligt sein und für PHP-Anwendungen, die API bereitstellen, ist das wirklich ein schlechtes Verhalten.

Nuxwin
quelle
Leider hatte noch "AH01071: Got error 'Primäres Skript unbekannt \ n'" Fehler bei Verwendung dieser Lösung.
22.
1

Die beste Möglichkeit, dies zu lösen, besteht darin, die Debugging-Protokolle für mod_proxy und mod_rewrite sowie für php-fpm zu aktivieren. In Apache 2.4 können Sie jetzt das Debuggen von Protokollen nur für bestimmte Module aktivieren. http://httpd.apache.org/docs/current/mod/core.html#loglevel Die Konfiguration pro Modul und pro Verzeichnis ist in Apache HTTP Server 2.3.6 und höher verfügbar

Möglicherweise erhalten Sie einen doppelten Schrägstrich auf Verzeichnissen?

Folgendes verwende ich und es funktioniert einwandfrei:

<LocationMatch ^(.*\.php)$>
  ProxyPass fcgi://127.0.0.1:9000/home/DOMAINUSER/public_html$1
</LocationMatch>
troseman
quelle
1

Eine Sache, auf die ich bei meinem Umgang mit diesem Problem gestoßen bin, ist, dass, wenn Sie die Kombination von:

chroot = /path/to/site
chdir = /

Übergeben Sie in Ihrer fpm-Pool-Konfiguration nicht den vollständigen Pfad zur ProxyPassDirektive.

ProxyPass fcgi://127.0.0.1:9020/$1

Aber -NUR- wenn der Pool an diesem Port gechrootet ist.

dünnes Eis
quelle
1

Ich bin mir nicht sicher, ob das Problem damit zusammenhängt, aber ich habe hier eine teilweise funktionierende Lösung gefunden:

https://stackoverflow.com/questions/44054617/mod-rewrite-in-2-4-25-triggering-fcgi-primary-script-unknown-error-in-php-fpm

Der Trick scheint das Hinzufügen eines? char in der .htaccess RewriteRule, zB mit:

RewriteRule ^(.*)$ index.php?/$1 [L,NS]

anstatt:

RewriteRule ^(.*)$ index.php/$1 [L,NS]

Die Ursache des Problems scheint eine Änderung in mod_rewrite von Apache 2.4.25 zu sein. Ich habe Apache trace1 log level verwendet, um eine "Schleife" zu beobachten, die $ 1 an php-fpm übergibt, nachdem index.php / $ 1 übergeben wurde. Die $ 1 erzeugen den Fehler "AH01071: Got error 'Primäres Skript unbekannt \ n'".

Hoffe, dass dieser kleine Leckerbissen jemandem hilft, seine Probleme zu lösen.

Biotherapie
quelle
0

ich habe den fehler auch nach dem umstieg auf php-fpm + apache 2.4.6 für drupal instanzen

aber ich benutze mpm event mod

einfach einstecken

DirectoryIndex index.php funktioniert bei mir

dann sehen meine Vhost Einstellungen so aus

<VirtualHost *:8080>
  ServerAdmin webmaster@localhost
  ServerName sever.com
  DocumentRoot /var/www/html/webroot
    ErrorLog logs/web-error_log
    CustomLog logs/web-access_log common
<IfModule mpm_event_module>
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/webroot/$1
</IfModule>
  <Directory /var/www/html/webroot>
     Options FollowSymlinks
     DirectoryIndex index.php
     AllowOverride All
     Require all granted
  </Directory>
</VirtualHost>

Vielen Dank

Die Standard-.htaccess-Datei von Drupal muss nicht überarbeitet werden

sealionking
quelle
[Mi Apr 25 01: 41: 31.526781 2018] [proxy_fcgi: error] [pid 2012: tid 140181155772160] (70007) Das angegebene Zeitlimit ist abgelaufen: [client 127.0.0.1:60308] AH01075: Fehler beim Versenden der Anfrage an:, Referer: www / admin / reports
sealionking
0

Ich habe die gleichen Probleme mit meinem Server (Docker Centos 7.3.16). Nach dem Verfolgen des PHP-FPM-Protokolls habe ich eine sys-lib verpasst. WARNING: [pool www] child 15081 said into stderr: "php-fpm: pool www: symbol lookup error: /lib64/libnsssysinit.so: undefined symbol: PR_GetEnvSecure" dann stelle ich das nspr wieder her, es funktioniert. Wenn Sie die Lösungen nicht finden können, nachdem Sie eine Methode ausprobiert haben, können Sie dies versuchen. yum -y install/reinstall nspr

Zitrone
quelle
0

Dies funktioniert mit Wordpress 5.1.1 und neuer zusammen mit PHP 7.3, FastCGI, Proxy, auch MariaDB / MySQL. Auf meinen Servern zweimal überprüft. Klappt wunderbar.

Zuerst unter CentOS / Fedora / Red Hat

sudo yum remove php*
sudo yum --enablerepo=extras install epel-release
sudo yum install php-fpm php-mysql php-gd php-imap php-mbstring 
sudo grep -E '(proxy.so|fcgi)' /etc/httpd/conf.modules.d/00-proxy.conf
sudo mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf_bak

Bearbeiten Sie diese Datei:

sudo nano /etc/php-fpm.d/www.conf

Fügen Sie dies ein:

[www]

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
listen = /run/php-fcgi.sock

sudo ll /run/php-fcgi.sock

Sollte srw-rw-rw- geben.

Oder wie man sich auf Debian / Ubuntu einrichtet

Tutorial:

Quelle: https://emi.is/?page=articles&article=php-7-installation-und-konfiguration-für-apache-2.4-mit-php-fpm-(debian,-repository)


sudo apt purge 'php*' or sudo apt-get purge 'php*'
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php7.3 php7.3-fpm php-mysql php-mbstring php-gd php-imap libapache2-mod-security2 modsecurity-crs
systemctl status php7.3-fpm
systemctl stop php7.3-fpm.service

sudo a2dismod php7.0 php7.1 php7.2 mpm_event mpm_worker
sudo a2enmod mpm_prefork
sudo a2enmod php7.3
sudo systemctl restart apache2 (httpd in CentOS)

Das Problem ist, dass PHP 7.3 von Ondrej Repo nur mit mpm_prefork Modus funktioniert. Er hat Git Repo, also kannst du ihn im Netz finden und ihn fragen, ob er PHP 7.3 für mpm_worker und mpm_event machen wird. Der Rest der Konfiguration für Debian-Familiendistrikte ist unten:


sudo apt --assume-yes install php7.3-fpm
sudo systemctl stop php7.3-fpm.service
sudo rm /var/log/php7.0-fpm.log
sudo mkdir /var/log/php7.3-fpm/
sudo touch /var/log/php7.3-fpm/error.log
sudo mkdir /var/log/php7.3/
sudo touch /var/log/php7.3/error.log
sudo mkdir /var/tmp/php7.3/
sudo > /etc/php/7.3/fpm/php.ini
sudo > /etc/php/7.3/fpm/php-fpm.conf
sudo rm /etc/php/7.3/fpm/pool.d/www.conf
sudo touch /etc/php/7.3/fpm/pool.d/example.com.conf
sudo useradd --comment "PHP" --shell "/usr/sbin/nologin" --system --user-group php

sudo nano /etc/php/7.3/fpm/php.ini

Einfügen


[PHP]
date.timezone = Europe/Prague
display_errors = Off
error_log = /var/log/php7.3/error.log
error_reporting = 32767
log_errors = On
register_argc_argv = Off
session.gc_probability = 0
short_open_tag = Off
upload_tmp_dir = /var/tmp/php7.3/

sudo nano /etc/php/7.3/fpm/php-fpm.conf

Einfügen


[global]
error_log = /var/log/php7.3-fpm/error.log
include = /etc/php/7.3/fpm/pool.d/*.conf

sudo nano /etc/php/7.3/fpm/pool.d/example.com.conf

Einfügen


[example.com]
group = php
listen = 127.0.0.1:9000
pm = ondemand
pm.max_children = 5
pm.max_requests = 200
pm.process_idle_timeout = 10s
user = php

sudo nano /etc/logrotate.d/php7.3-fpm

Kopieren Sie diese in die TXT-Datei:

/var/log/php7.3-fpm.log {
    rotate 12
    weekly
    missingok
    notifempty
    compress
    delaycompress
    postrotate
            /usr/lib/php/php7.3-fpm-reopenlogs
    endscript
}

entferne es und füge es statt oben ein:

/var/log/php7.3/*.log /var/log/php7.3-fpm/*.log
{
copytruncate
maxage 365
missingok
monthly
notifempty
rotate 12
}

Direktive hinzufügen

sudo nano /etc/apache2/sites-available/example.com.conf


<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/example.com/public_html
    DirectoryIndex index.php index.htm index.html index.xht index.xhtml
    LogLevel info warn
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <FilesMatch "^\.ht">
    Require all denied
    </FilesMatch>

    <files readme.html>
    order allow,deny
    deny from all
    </files>

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/example.com/public_html

    <Directory /var/www/html/example.com/public_html>
        Options Indexes FollowSymLinks Includes IncludesNOEXEC SymLinksIfOwnerMatch
        AllowOverride None
    </Directory>
</VirtualHost>

Dann aktiviere die Seite:

sudo a2ensite /etc/apache2/sites-available/example.com.conf

Nächste Bearbeitung der SSL-Site (In diesem Fall wurde certbot von Let's Encrypt bereits zu Beginn der SSL-Zertifizierungskonfiguration installiert und konfiguriert.)

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

<IfModule mod_ssl.c>
    #headers for security man in the middle attack find how to enable this mod in Google
    LoadModule headers_module modules/mod_headers.so
    <VirtualHost *:443>
        Header always set Strict-Transport-Security "max-age=15768000"
        SSLEngine On
        ServerName example.com
        ServerAdmin [email protected]
        DocumentRoot /var/www/html/example.com/public_html
        <Directory /var/www/html/example.com/public_html>
        Options Indexes FollowSymLinks Includes IncludesNOEXEC SymLinksIfOwnerMatch
        AllowOverride All
        Require all granted
        DirectoryIndex index.php
        RewriteEngine On
         <FilesMatch ^/(.*\.php(/.*)?)$>
           SetHandler "fcgi://example.com:9000/var/www/html/example.com/public_html"
          </FilesMatch>
        </Directory>
    # Log file locations
    #LogLevel info ssl:warn
    LogLevel debug
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # modern configuration
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    #SSLCipherSuite HIGH:!aNULL:!MD5
    SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM$
    SSLHonorCipherOrder on
    SSLCompression off
    SSLSessionTickets off

    <FilesMatch "^\.ht">
    Require all denied
    </FilesMatch>

    <files readme.html>
       order allow,deny
       deny from all
    </files>

</VirtualHost>
    #Stapling OCSP for Let's Encrypt certs.
    SSLUseStapling          on
    SSLStaplingResponderTimeout     5
    SSLStaplingReturnResponderErrors        off
    SSLStaplingCache        shmcb:/var/run/ocsp(128000)
</IfModule>

sudo a2enmod proxy proxy_fcgi setenvif
sudo systemctl reload apache2.service
sudo chown --recursive root:adm /etc/php/
sudo chmod --recursive 0770 /etc/php/
sudo chown --recursive php:adm /var/log/php7.3/
sudo chown --recursive php:adm /var/log/php7.3-fpm/
sudo chmod --recursive 0770 /var/log/php7.3/
sudo chmod --recursive 0770 /var/log/php7.3-fpm/
sudo chown --recursive php:php /var/tmp/php7.3/
sudo chmod --recursive 0770 /var/tmp/php7.3/
sudo a2enconf php7.3-fpm
sudo systemctl enable php7.3-fpm.service
sudo systemctl start php7.3-fpm.service

Denken Sie daran, einer Firewall unter Debian / Ubuntu einen Port 9000 hinzuzufügen

sudo ufw allow 9000/tcp
sudo ufw status

Auf CentoOS / Fedora / Red Hat

sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
sudo firewall-cmd --state 
Gall Anonim
quelle